gpt4 book ai didi

python - 安全转换为元组/列表

转载 作者:太空宇宙 更新时间:2023-11-03 13:40:39 24 4
gpt4 key购买 nike

我有一个元组 y = (3,4),我想将其附加到列表 z 的每个元素。

如果 z 包含单个元素我可以这样做:

>>> z = [1, 2]
>>> [(x, ) + y for x in z]
[(1, 3, 4), (2, 3, 4)]

如果 z 包含元组,我可以这样做:

>>> z = [(0, 1), (1, 2)]
>>> [x + y for x in z]
[(0, 1, 3, 4), (1, 2, 3, 4)]

但是如果我事先不知道z 是单个元素还是元组/列表,我该如何继续?

我试过:

>>> z = [1, 2]
>>> [tuple(x) + y for x in z]

但这给了我:

TypeError: 'int' object is not iterable

显然我可以创建一个函数来测试元组:

In [38]: def tuplify(x):
....: try:
....: return tuple(x) # This is 'transparent' if x is already a tuple
....: except TypeError:
....: return (x, )

但这似乎很不雅观。什么是继续的好方法?

注意:整个问题同样可以针对列表提出

最佳答案

如果你真的想要一个单行,这个:

[x + y if isinstance(x, tuple) else (x, ) + y for x in z]

将为您工作。

这是同时尝试列表和元组列表的结果:

>>> y = (3,4)
>>> z = [1, 2]
>>> [x + y if isinstance(x, tuple) else (x, ) + y for x in z]
[(1, 3, 4), (2, 3, 4)]
>>> z = [(0, 1), (1, 2)]
>>> [x + y if isinstance(x, tuple) else (x, ) + y for x in z]
[(0, 1, 3, 4), (1, 2, 3, 4)]

如果 y 是一个列表,这将起作用:

[x + y if isinstance(x, list) else [x] + y for x in z]

关于python - 安全转换为元组/列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31993419/

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