将列表中的项分成两部分,并将其中一部分追加到另一个列表中

1 投票
3 回答
4684 浏览
提问于 2025-04-16 00:38

大家好。我想在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 中的空行给过滤掉。

撰写回答