Python循环列表和逗号分隔列表

时间:2017-02-16 12:04:14

标签: python list loops

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

4 个答案:

答案 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'>