gpt4 book ai didi

python - 在迭代值之前在列表理解期间测试列表中的值类型?

转载 作者:太空狗 更新时间:2023-10-30 02:41:54 24 4
gpt4 key购买 nike

我有一个如下所示的列表:

test = [[1,11],[2,22],3.0]

我想像这样创建每对中第一个值的列表:

[f for [f,l] in test]

所以我得到这个结果:

[1,2]

但是,正如预期的那样,我得到了这个错误:

TypeError: 'float' object is not iterable

所以我试着这样修改它:

[f for [f,l] in test if type([f,l]) != float]

我仍然得到同样的错误:

TypeError: 'float' object is not iterable

如何在列表理解遍历其中的项目之前测试列表中的值的类型?

最佳答案

在这种情况下,您不能这么早地进行拆包,因为您需要完整的项目才能检查其类型。

>>> test = [[1,11],[2,22],3.0]
>>> [item[0] for item in test if isinstance(item, list)]
[1, 2]

您执行此操作的方式(for a, b in iterable)在您有机会查看类型之前尝试解包,因此您最终会遇到 TypeError 在您有机会查看这些项目之前。

如果你真的喜欢边走边解包,你可以先过滤测试项目,然后在过滤后的数据上写下你的列表理解......

>>> test_iterables = (item for item in test if isinstance(item, list))
>>> [f for f, l in test_iterables]

另请注意,根据您要支持的类型,最好执行
isinstance(item, collections.Sequence)isinstance(item , collections.Iterable)

关于python - 在迭代值之前在列表理解期间测试列表中的值类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38103980/

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