Python的for循环抽象程度要高于C的for循环,因为Python的for循环不仅可以用在list或tuple上,还可以作用在其他可迭代对象上。list这种数据类型虽然有下标,但很多其他数据类型是没有下标的,但是,只要是可迭代对象,无论有无下标,都可以迭代,比如dict就可以迭代。
遍历列表:
list:
l = []
l = [1,2,3]
from collections import Iterable
list1 = range(10)
if isinstance(list1,Iterable):
for i in list1:
print(i)
如果要对list实现类似Java那样的下标循环怎么办?Python内置的enumerate函数可以把一个list变成"索引-元素对",这样就可以在for循环中同时迭代索引和元素本身:
l = list(list1)
for i,value in enumerate(l):
print(i,value)
===================================================================================
遍历字典:
dict:
d = {‘key1’ : value1, ‘key2’ : value2 }
dict1 = {'a':100,'b':200,'c':300}
for key,value in dict1.items():
print(key,'==' , value)
for key in dict1.keys():
print(key,'==',dict1[key])
for value in dict1.values():
print(value)
列表推导式:
是Python内置的非常简单却强大的可以用来创建list的生成式。
生成list 可以用内置函数range(1,10) 生成[1,2,3,4,5,6,7,8,9]
但是如果是子项*子项的列表呢?如下:
new_list = []
for i in range(1,10):
ii = i * i
new_list.append(ii)
print(new_list)
这种代码比较多,优化一下,可以这样操作:
new_list2 = [x * x for x in range(1,10)]
print(new_list2)