如何提取字符串列表的一部分?

6

我有一个字符串列表,想要提取每个字符串的前6个字符并存储到一个新列表中。

我可以循环遍历该列表,提取前6个字符并将其添加到新列表中。

y = []
for i in range(len(x)):
    y.append(int(x[i][0:6]))

我想知道是否有一种优雅的一行代码解决方案。我尝试了以下代码:

y = x[:][0:6]

但是它返回一个包含前6个字符串的列表。

1
查看列表推导式 - acushner
5个回答

9

试试这个:

y = [z[:6] for z in x]

这与此相同:

y = []               # make the list
for z in x:          # loop through the list
    y.append(z[:6])  # add the first 6 letters of the string to y

4

有的,可以使用以下列表推导式
newArray = [x[:6] for x in y]

切片的语法如下:list[start:end:step]

参数:

start - 整数,表示对象切片开始的位置
stop - 整数,表示切片结束的位置。切片在索引stop-1处停止。
step - 整数值,决定每个索引之间的增量大小


示例:

    list[start:end] # 获取从start到end-1的项
    list[start:]    # 获取从start到列表结尾的所有项
    list[:end]      # 获取从开头到end-1的所有项(即所需内容)
    list[:]         # 获取原始列表的副本

如果startend-负数,则从末尾计数

    list[-1]    # 最后一项
    list[-2:]   # 最后两项
    list[:-2]   # 除了最后两项之外的所有内容
    list[::-1]  # 反转列表

演示:
假设我有一个array = ["doctorWho","Daleks","Cyborgs","Tardis","SonicSqrewDriver"]

我想要获取前3个项。

>>> array[:3] # 0, 1, 2 (.. then it stops)
['doctorWho', 'Daleks', 'Cyborgs']

(or I decided to reverse it):

>>> array[::-1]
['SonicSqrewDriver', 'Tardis', 'Cyborgs', 'Daleks', 'doctorWho']

(现在我想获得最后一个项目)

>>> array[-1]
'SonicSqrewDriver'

(或者最后3个项目)

>>> array[-3:]
['Cyborgs', 'Tardis', 'SonicSqrewDriver']

2
这可能有帮助。
stringList = ['abcdeffadsff', 'afdfsdfdsfsdf', 'fdsfdsfsdf', 'gfhthtgffgf']
newList = [string[:6] for string in stringList]

2

试试这个

ans_list = [ element[:6] for element in list_x ]

我想知道是否有一种优雅的单行解决方案。我尝试了以下代码:y = x[:][0:6]。 OP 正在尝试使用带切片的列表推导式。 - Feelsbadman

0

你也可以使用 map 来实现:

list(map(lambda w: int(w[:6]), x))

并使用 itertools.islice

list(map(lambda w:list(int(itertools.islice(w, 6))), x))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接