我有一个字符串列表,我想提取每个字符串的前6个字符并将它们存储在新列表中。
我可以遍历列表并提取前6个字符,并将其附加到新列表中。
y = []
for i in range(len(x)):
y.append(int(x[i][0:6]))
我想知道是否有一种优雅的一线解决方案。 我尝试了以下方法:
y = x[:][0:6]
但是它返回前6个字符串的列表。
答案 0 :(得分:7)
尝试一下:
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
答案 1 :(得分:1)
这可能有帮助
stringList = ['abcdeffadsff', 'afdfsdfdsfsdf', 'fdsfdsfsdf', 'gfhthtgffgf']
newList = [string[:6] for string in stringList]
答案 2 :(得分:1)
尝试一下
ans_list = [ element[:6] for element in list_x ]
答案 3 :(得分:0)
是的。。您可以使用以下 list-comprehention.
newArray = [x[:6] for x in y]
Slicing具有以下语法:list[start:end:step]
参数:
start-对象切片开始的起始整数
stop-整数,直到切片发生为止。切片在索引停止处停止-1.
step-整数值,用于确定切片时每个索引之间的增量
示例:
list[start:end] # get items from start to end-1 list[start:] # get items from start to the rest of the list list[:end] # get items from the beginning to the end-1 ( WHAT YOU WANT ) list[:] # get a copy of the original list
如果start
或end
为-negative
,则将从end
开始计数
list[-1] # last item list[-2:] # last two items list[:-2] # everything except the last two items list[::-1] # REVERSE the list
演示:
假设我有一个array = ["doctorWho","Daleks","Cyborgs","Tardis","SonicSqrewDriver"]
,我想获得first 3
项。
>>> array[:3] # 0, 1, 2 (.. then it stops)
['doctorWho', 'Daleks', 'Cyborgs']
(或我决定将其撤消):
>>> array[::-1]
['SonicSqrewDriver', 'Tardis', 'Cyborgs', 'Daleks', 'doctorWho']
(现在我想获取最后一项)
>>> array[-1]
'SonicSqrewDriver'
(或最后3个项目)
>>> array[-3:]
['Cyborgs', 'Tardis', 'SonicSqrewDriver']
答案 4 :(得分:0)
您也可以为此使用地图:
list(map(lambda w: int(w[:6]), x))
并使用itertools.islice
:
list(map(lambda w:list(int(itertools.islice(w, 6))), x))