Python循环列表和逗号分隔列表的结果相同

Sud*_*lla 2 python loops list

我最近偶然在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'])

因此对于vfor循环,没有什么变化.

唯一的区别是元组是不可变的,所以你不能添加/删除第一个元素values,也不能设置元素values(你可以在各个列表上执行调用).


fre*_*ini 6

逗号分隔的列表实际上是一个元组:

>>> 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)

由于元组是可迭代的,因此得到相同的结果.