pyhton for循环语句有多个迭代变量时如何理解

pyhton for循环语句有多个迭代变量时如何理解

如下面的例子

【例子1】
languages = ['Python', 'R', 'Matlab', 'C++']
for language in languages:
    print('I love', language)
print('Done!')
# I love Python
# I love R
# I love Matlab
# I love C++
# Done!

【例子2for i, language in enumerate(languages, 2):
    print(i, 'I love', language)
print('Done!')
# 2 I love Python
# 3 I love R
# 4 I love Matlab
# 5 I love C++
# Done!

例子1容易理解,language 的取值是 list 中的每个元素。

例子2有点不好理解了,看打印结果可知,迭代变量 i 是取enumerate函数的返回值,language是取列表里的元素。那为什么迭代变量 i 的迭代对象不是languageslanguage的迭代对象不是 enumerate()?它们的对应原则是什么样的?

其实这是一个误解,迭代变量 ilanguage其实只是enumerate函数的两个返回值而已,enumerate函数先返回下标,后返回元素值

之所以产生这个误解,是因为C函数只能有一个返回值的,而Python可以有多个返回值的,这个观念要转变过来

def func1(a):
    if a:
        return 1,2,3,4
    return 5,6,7,8

x, y, z, k = func1(1)
print(x,y,z,k)

x, y, z, k = func1(0)
print(x,y,z,k)

输出:

1 2 3 4
5 6 7 8

所以啊C/C++用的比较多的同学们,学习python时,要抛弃以前的知识,当做重头学,这要才能更好领悟python的精髓。

举一反三:

Python还可以这样赋值 x, y, z = 1, 2, 3 ,链式赋值的这种写法在C/C++里是不存在的,会直接报语法错误

posted @ 2021-04-13 22:48  HL棣  阅读(4)  评论(0编辑  收藏  举报  来源