- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有一个元组 x = (2,)
,我想向其附加一个变量 y
。我事先并不知道 y
到底是什么类型的变量。
y
可以是:
x+y
,或者x+(y,)
。采用一种策略会在一半的时间里给我一个 TypeError,而采用另一种策略会在我想要 (2, 3, 4)
。
处理此问题的最佳方法是什么?
最佳答案
使用第二种策略,只需检查您添加的是包含多个项目还是单个项目的可迭代对象。
您可以通过检查是否存在 __iter__
属性来查看对象是否为可迭代对象(tuple
、list
等) .例如:
# Checks whether the object is iterable, like a tuple or list, but not a string.
if hasattr(y, "__iter__"):
x += tuple(y)
# Otherwise, it must be a "single object" as you describe it.
else:
x += (y,)
试试这个。此代码段的行为与您在问题中描述的完全一样。
请注意,在 Python 3 中,字符串具有 __iter__
方法。在 Python 2.7 中:
>>> hasattr("abc", "__iter__")
False
在 Python 3+ 中:
>>> hasattr("abc","__iter__")
True
如果您使用的是 Python 3,但您没有在问题中提及,请将 hasattr(y, "__iter__")
替换为 hasattr(y, "__iter__") 而不是isinstance(y, str)
。这仍然会考虑元组或列表。
关于python - 将元组与变量连接起来,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36248149/
我正在尝试执行 vagrant up 但一直遇到此错误: ==> default: IOError: [Errno 13] Permission denied: '/usr/local/lib/pyt
我在容器 div 中有一系列动态创建的不同高度的 div。 Varying text... Varying text... Varying text... Varying text.
通过 cygwin 运行 vagrant up 时遇到以下错误。 stderr: /bin/bash: /home/vagrant/.ansible/tmp/ansible-tmp-14872260
今天要向小伙伴们介绍的是一个能够快速地把数据制作成可视化、交互页面的 Python 框架:Streamlit,分分钟让你的数据动起来! 犹记得我在做机器学习和数据分析方面的毕设时,
我是 vagrant 的新手,正在尝试将第二个磁盘添加到我正在用 vagrant 制作的虚拟机中。 我想出了如何在第一次启动虚拟机时连接磁盘,但是当我关闭机器时 然后再次备份(使用 'vagrant
我是一名优秀的程序员,十分优秀!