当我想循环打印一个数组时候会列出并使用for循环逐个遍历,但是如果范围太大可能就不适合这样遍历:
for i in [1,2,3,4,5,6,7,8,9,10]:
print(i)
除此之外,还有五种函数可以优化代码使之达成循环的目的。
range()
使用range函数遍历数组
for i in range(1, 11):
print(i)
range函数参数:
range(start,stop,step) #(开始,结束,每次执行跳过几个参数)
eg:
for i in range(2,11,2):
print(i)
# 输出为: 2 4 6 8 10
zip()
python中的zip函数,像是拉链一样可以组合两个或者多个列表。将组合列表中的元素以元组的形势打包出来,到这些元组组成的列表里。
list_a = ['a','b','c','d']
list_b = ['1','2','3','4']
for l_a,l_b in zip(list_a,list_b):
print(l_a,l_b)
#输出为:
#a 1
#b 2
#c 3
#d 4
reversed()
如果是使用range函数:
list = ['a', 'b', 'c', 'd']
for i in range(len(list)-1,-1,-1)):
print(list[i])
反向遍历列表,reversed函数会更加方便(注:它里面的元素可以是列表, 元组, 字符串;然后返回一个元素经过反转的迭代器)
list = ['a', 'b', 'c', 'd']
for i in reversed(list):
print(list)
# d
# c
# b
# a
enumerate()
enumerate的意思代表枚举,可以打印索引和元素值
循环遍历一个列表并且打印出来他在列表中的位置:
如果使用range函数,那么可能需要先取到列表的长度,做为一个条件,再取出对应位置的list[i]
list = ['a', 'b', 'c', 'd']
for i in range(len(list)):
print(i,list(i))
enumerate()函数会减少判断数组长度的步骤:
list = ['a', 'b', 'c', 'd']
for i,l in enumerate(list):
print(i,l)
# 输出
# 0 a
# 1 b
# 2 c
# 3 d
sorted()
当需要给列表里元素排序的顺序遍历列表的时候可以使用sorted函数。
她和sort()不同的是,sort只适用于列表,但是它适用于所有可迭代的对象。
sorted的语法:
sorted(iterable, key=None, reverse=False)
# iterable对象,key用来作为比较的参数/元素,reverse升序(默认)
可以按照 数字从小到大:
list = [2,1,5,4,6,3]
for i in sorted(list):
print(i)
# 输出:
# 1
# 2
# 3
# 4
# 5
# 6
可以按照 字符串的长度:
cloths = ['shirt', 'hat', 'socks', 'shorts']
for cloth in sorted(cloths, key=len):
print(cloth)
# 输出:
# ------
# hat
# shirt
# socks
# shorts