我最近偶然在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)
答案 0 :(得分:9)
如果用逗号分隔值,Python 会将其解释为元组。所以你的第一个陈述相当于:
values = (['cat','fish'], ['cat','fish','monkey'], ['cat','fish','monkey','fish'])
与列表一样,元组可以在其元素上重复(同样是['cat','fish']
等。)
因此对于v
循环中的for
,没有任何变化。
唯一的区别是元组是不可变的,所以无法添加/删除元素到第一个values
,也不能设置 values
的元素(但您可以对各个列表执行调用)。
答案 1 :(得分:5)
以逗号分隔的列表实际上是一个元组:
>>> values = ['cat','fish'], ['cat','fish','monkey'], ['cat','fish','monkey','fish']
>>> values
(['cat', 'fish'], ['cat', 'fish', 'monkey'], ['cat', 'fish', 'monkey', 'fish'])
>>> type(values)
<type 'tuple'>
由于元组是可迭代的,因此得到相同的结果。
答案 2 :(得分:4)
基本上,当你用coma分隔列表时,你正在构建一个元组,可以迭代:
values = ['cat','fish'], ['cat','fish','monkey'], ['cat','fish','monkey','fish']
values
(['cat','fish'], ['cat','fish','monkey'], ['cat','fish','monkey','fish'])
答案 3 :(得分:0)
第一个被视为元组,第二个被列为列表。两者都可以迭代for循环。
# comma separated lists
values = ['cat','fish'], ['cat','fish','monkey'],['cat','fish','monkey','fish']
print(type(values))
# Output will be <type 'tuple'>
# List of lists
values = [['cat','fish'], ['cat','fish','monkey'], `enter code here`['cat','fish','monkey','fish']]
print(type(values))
# Output will be <type 'list'>