gpt4 book ai didi

python - 如何在 python 中遍历列表时删除 None

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

我有这两个不相等的列表,我正在使用 itertools 循环遍历它们,我正在尝试使用过滤器函数删除 List1 中生成的 None ,以便在一天结束时 a 只包含两个元素三个(算上一个)但我不断收到此错误:类型错误:NoneType 对象不可迭代

import itertools

List1 = [['a'],['b']]
List2 = ['A','b','C']

l = list(itertools.chain(*List1))
print(l)

for a, b in itertools.zip_longest((b for a in List1 for b in a),List2):
filter(None, a)
print(a,b)

最佳答案

不完全清楚你想要什么。据我了解问题和评论,您想使用 izip_longest 组合列表,但结果中没有任何 None 元素。

这将从列表的压缩“切片”中过滤出 None 并仅打印非 None 值。但请注意,通过这种方式您无法确定 non_none 列表中的第一个元素是否来自第一个列表或第二个或第三个。

a = ["1", "2"]
b = ["a", "b", "c", "d"]
c = ["x", "y", "z"]

for zipped in izip_longest(a, b, c):
non_none = filter(None, zipped)
print non_none

输出:

('1', 'a', 'x')
('2', 'b', 'y')
('c', 'z')
('d',)

顺便说一句,您的filter(None, a) 做了什么:它从您的a 中过滤None 值,即从strings "a""b"(作用不大,因为它们不包含 None 值),直到最后一个值失败,因为 None 不可迭代。此外,它无论如何都会丢弃结果,因为您没有将它绑定(bind)到变量。 filter 不会改变原始列表,但会返回过滤后的副本!

关于python - 如何在 python 中遍历列表时删除 None,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29548084/

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