gpt4 book ai didi

python - 将列表项附加到列表列表中

转载 作者:行者123 更新时间:2023-11-28 22:21:59 24 4
gpt4 key购买 nike

我有一个列表,其结构如下:

data = [[], [], ..., []]  # N sub-lists

我正在从一个我无法控制的进程接收数据,格式如下:

new_entries = ['foo', 'bar', ..., 'foobar']  # guaranteed N entries

new_entries 的第 i 项存储在 的第 i 子列表中的最佳方法是什么>数据?

所以到达后的结果是:

data = [['foo'], ['bar'], ..., ['foobar']]

以下内容是否尽善尽美?

for i, item in enumerate(new_entries):
data[i].append(item)

最佳答案

使用 zip似乎比 enumerate 更优雅一点,但通常你的代码没有问题。对于任何人都必须阅读或维护的任何生产级代码,这(或您的)应该是可行的方法:

for lst, entry in zip(data, new_entries):
lst.append(entry)

如果你有病态的冲动想在一行中完成它,你可以使用 map或理解:

list(map(lambda x: x[0].append(x[1]), zip(data, new_entries)))  # Py3
map(lambda (x, y): x.append(y), zip(data, new_entries)) # Py2

# or shorter, thx to Stefan Pochmann:
# Py3: any as a more space-efficient consumer than list
any(map(list.append, data, new_entries))
map(list.append, data, new_entries) # Py2

[lst.append(entry) for lst, entry in zip(data, new_entries)]

但我强烈建议不要为了节省行而牺牲可读性。在这两种情况下,data 中列表的变化更多的是副作用!

当然,可以使用一个很好的旧列表推导式(实际上使用推导式的结果)但确实会带来性能问题,因为连接是 O(M+N):

data = [lst + [entry] for lst, entry in zip(data, new_entries)]

关于python - 将列表项附加到列表列表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47929630/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com