我最近偶然在python中遇到过这种行为.有人可以解释为什么循环一个list of lists以及逗号分隔的列表会导致相同的结果.
# comma separated lists
values = ['cat','fish'], ['cat','fish','monkey'], ['cat','fish','monkey','fish']
for v in values:
print(v)
# List of lists
values = [['cat','fish'], ['cat','fish','monkey'], ['cat','fish','monkey','fish']]
for v in values:
print(v)
Run Code Online (Sandbox Code Playgroud)
Wil*_*sem 10
如果用逗号分隔值,Python 会将其解释为元组.所以你的第一个陈述相当于:
values = (['cat','fish'], ['cat','fish','monkey'], ['cat','fish','monkey','fish'])
Run Code Online (Sandbox Code Playgroud)
像列表一样,元组可以在其元素上重复(它们也是如此['cat','fish'])
因此对于v在for循环,没有什么变化.
唯一的区别是元组是不可变的,所以你不能添加/删除第一个元素values,也不能设置元素values(你可以在各个列表上执行调用).
逗号分隔的列表实际上是一个元组:
>>> values = ['cat','fish'], ['cat','fish','monkey'], ['cat','fish','monkey','fish']
>>> values
(['cat', 'fish'], ['cat', 'fish', 'monkey'], ['cat', 'fish', 'monkey', 'fish'])
>>> type(values)
<type 'tuple'>
Run Code Online (Sandbox Code Playgroud)
由于元组是可迭代的,因此得到相同的结果.
| 归档时间: |
|
| 查看次数: |
631 次 |
| 最近记录: |