gpt4 book ai didi

python - 列表理解表达式显示无值而不是子列表

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

我正在学习列表理解并且速度非常快,但是我正在尝试将值插入子列表并且它显示该子列表的 None。这是我正在尝试的,

def tester(lst):
print [ x if x%2 else x*100 for x in range(1, 10) ] # It is working
#output: [1, 200, 3, 400, 5, 600, 7, 800, 9]
print [ls.insert(2,"Null") for ls in lst]
#output: [None, None]


lst = [['a','c','d'],['1','2','3']]

tester(lst)

为什么显示 [None, None] ?为什么不显示 [['a','c','d', 'Null'],['1','2','3', 'Null']]

最佳答案

list.insert 就地修改列表并返回 None

>>> lis = range(5)
>>> repr(lis.insert(2, 'null')) # returns None
'None'
>>> lis # But the list is affected.
[0, 1, 'null', 2, 3, 4]

在这里使用一个简单的 for 循环:

for ls in lst:
ls.insert(2, "Null")

你也可以用列表推导来做,但我更喜欢普通的循环版本:

>>> lst = [range(5) for _ in range(5)]
>>> [ls for ls in lst if not ls.insert(2, 'null')]
[[0, 1, 'null', 2, 3, 4], [0, 1, 'null', 2, 3, 4], [0, 1, 'null', 2, 3, 4], [0, 1, 'null', 2, 3, 4], [0, 1, 'null', 2, 3, 4]]

这里当检查 if 条件时,项目被插入到当前列表中,并且作为 list.insert 返回 Nonenot None 始终为 True

更新:

要根据需要使用三元表达式的条件更新列表对象:

>>> lst = [['a','c','d'],['1','2','3'], [1, 2, 3, 4]]
>>> [ls if (len(ls) == 3 and not ls.insert(2, 'null')) else ls for ls in lst]
[['a', 'c', 'null', 'd'], ['1', '2', 'null', '3'], [1, 2, 3, 4]]

关于python - 列表理解表达式显示无值而不是子列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21447870/

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