gpt4 book ai didi

添加元素 csv.writerows 的 Pythonic 方式

转载 作者:太空宇宙 更新时间:2023-11-04 07:06:37 24 4
gpt4 key购买 nike

我有一个列表列表。每个列表应包含 6 个元素。在某些情况下,我的列表只包含 1 个元素(检查以下列表的最后一个元素):

[['lemonade', '/g/11bz0dg4b_', '46.6522598267', 'Lemonade', 'Beyonc\xc3\xa9', 'en'], 
['blank space', '/m/012d3qyr', '153.392837524', 'Blank Space', '', 'en'],
['radiolab', '/g/11b80zm_6d', '11.685131073', 'Radiolab', '', 'en'],
['migos t shirt']]

因此我可以很容易地做到这一点,然后追加:

l = ['migos t shirt'] 
l += ['','','','','']
ll.append(l)

是否有更好/优雅的方式来做到这一点?最终目标是将我的列表列表与 csv.writerows 一起使用,并希望我的文件在本例中具有一致数量的逗号 6 个元素。

最佳答案

您可以将一个列表与一个空字符串 [''] 相乘,以获得包含尽可能多的空字符串的列表:

>>>  [''] * 3
['', '', '']

乘以零得到一个空列表:

>>>  [''] * 0
[]

len(line) 找出你想要的大小 (6) 和列表的当前长度的差异,并添加一个包含尽可能多的 的列表'' 到每行的末尾:

对于此数据:

data = [['lemonade', '/g/11bz0dg4b_', '46.6522598267', 'Lemonade', 'Beyonc\xc3\xa9', 'en'],
['blank space', '/m/012d3qyr', '153.392837524', 'Blank Space', '', 'en'],
['radiolab', '/g/11b80zm_6d', '11.685131073', 'Radiolab', '', 'en'],
['migos t shirt']]

你可以应用这些:

size = 6
for line in data:
line += [''] * (size - len(line))

得到这个结果:

[['lemonade', '/g/11bz0dg4b_', '46.6522598267', 'Lemonade', 'Beyoncé', 'en'],
['blank space', '/m/012d3qyr', '153.392837524', 'Blank Space', '', 'en'],
['radiolab', '/g/11b80zm_6d', '11.685131073', 'Radiolab', '', 'en'],
['migos t shirt', '', '', '', '', '']]

与创建全新列表的列表推导式相比,此方法修改了列表。这对于大型列表非常有用。此外,如果所有行的长度都已经是 6 个元素,则不会对原始列表进行任何更改。即使原始列表已经处于完美状态,列表理解也会创建一个新列表。即在所有子列表中有 6 个元素。

关于添加元素 csv.writerows 的 Pythonic 方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41629311/

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