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!
【例子2】
for 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
的迭代对象不是languages
,language
的迭代对象不是 enumerate()
?它们的对应原则是什么样的?
其实这是一个误解,迭代变量 i
和 language
其实只是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++里是不存在的,会直接报语法错误