我有一个字符串列表,想要提取每个字符串的前6个字符并存储到一个新列表中。
我可以循环遍历该列表,提取前6个字符并将其添加到新列表中。
y = []
for i in range(len(x)):
y.append(int(x[i][0:6]))
我想知道是否有一种优雅的一行代码解决方案。我尝试了以下代码:
y = x[:][0:6]
但是它返回一个包含前6个字符串的列表。
试试这个:
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
有的,可以使用以下列表推导式。
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[:] # 获取原始列表的副本
如果start
或end
为-负数
,则从末尾
计数
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']
stringList = ['abcdeffadsff', 'afdfsdfdsfsdf', 'fdsfdsfsdf', 'gfhthtgffgf']
newList = [string[:6] for string in stringList]
试试这个
ans_list = [ element[:6] for element in list_x ]
y = x[:][0:6]
。 OP 正在尝试使用带切片的列表推导式。 - Feelsbadman你也可以使用 map 来实现:
list(map(lambda w: int(w[:6]), x))
并使用 itertools.islice
:
list(map(lambda w:list(int(itertools.islice(w, 6))), x))