将列表中的项分成两部分,并将其中一部分追加到另一个列表中
大家好。我想在Python中更高效地使用列表,但我不太确定我想要的是否可行,或者值得不值得去研究。
这里的stream是一个列表。列表中的每个项目看起来像这样:
10,123400FFFE001DB9AA
我想获取每个项目中逗号后面的部分,所以我遍历这个列表,把每个项目用逗号分开,并把结果存储在一个临时变量temp中。然后我把temp[1]的内容添加到另一个叫做incoming_data的列表里。
我想把分割和保存到temp,以及添加到incoming_data列表的这两步合并成一行代码,类似于:
incoming_data.append(item.split(','))
我知道上面的写法完全不对,但我希望能表达我的意思。这是我现在的代码。
欢迎大家提出其他建议。谢谢!
#init the final list
incoming_data = list()
#iterate over each item in the list
for item in stream:
#clear the temp variable for next time
temp = ''
#we sometimes get blank items in the stream list so check first
if item <> '':
#split each item in the stream list using the comma as delimiter
temp = item.split(',')
#append to the final data lis
incoming_data.append(temp[1])
3 个回答
1
你可以用Python非常方便的列表推导式来一行代码搞定这个问题:
incoming_data = [ item.split(',')[1] for item in stream ]
1
其实,你可以用 incoming_data.append(item.split(',')[1])
这行代码。如果你真的想的话,还可以把所有的内容合并成一行,用列表推导式来写(我现在的版本已经修正了空行的问题,多亏了Richard):
incoming_data = [item.split(',')[0] for item in stream if item]
不过,如果你真的在处理流数据的话,建议你看看 生成器(PDF) - 它们真的很棒。
5
incoming_data = [item.split(",")[1] for item in stream if item]
这个 if item
的作用是把 stream
中的空行给过滤掉。