首页 > 解决方案 > python中list,tuple,...对象的惊人行为

问题描述

考虑以下 3 个简短的片段:

片段1:

nation = ['Roman', 'Egypt', 'Greek', 'Chinese', 'Islamic', 'Mayan', 'Persian', 'Mongol']
golden_age = ['27BC-1453AD', '3150BC-30BC', '800BC-600AD', '221BC-1912AD', '750AD-1257AD', '2000BC-1540AD', '550BC-651AD', '1206AD-1368AD']
a = zip(nation, golden_age)
print(a)

片段 2:

b = list(a)
print('b',b)

片段 3:

c = tuple(a)
print('c',c)

假设首先我运行片段 1。然后是第二个和第三个。令人惊讶的是第三个片段打印c()(似乎对象a在我将它传递给片段 2 中的列表构造函数后消失了。所以当将它转换为元组时,结果为空!)

现在将运行顺序更改为 1 -> 3 -> 2。这一次,第二个片段打印空列表!我看起来像元组构造函数已经吃掉了 object a

为什么元组应该影响它的输入参数?(也适用于列表,也许还有其他人!)

标签: pythonpython-3.xlisttuples

解决方案


推荐阅读