python list 循环,python 遍历list的索引和值
for循环是最常用的循环语句,在各种高级编程语言中频繁使用,python也不例外。除了传统的for循环或嵌套for循环语法,python还有一个精致的list中for循环语句的语法。如果能熟练掌握这种语法,对提高编程效率会有很大帮助。今天我就和大家分享一下我收集到的一些使用list中for循环的小技巧,希望对你有所帮助:
1.只需替换for循环。它的主要语法结构如下:
my_list=[ 表达式 for 循环项 in 循环体 (if 条件) ]
这里,表达式可以是循环项,也可以是循环项的函数或方法。让我们举个例子:
name=Donald Trump#list中的for循环语法只使用一个代码my _ list=[c for c in name]print(name)print(my _ list)
传统的for循环语法是这样写的:
Name=Donald Trump#传统for循环语法需要三句代码my _ list=[]for C in name:my _ list . append(C)print(name)print(my _ list)
在这里,传统的for循环需要使用三个代码,而list中的for循环只用一个代码就可以实现同样的功能。让我们看另一个例子:
Array=[[16,3,7],[2,24,9],[4,1,12]] #表达式可以是函数row _ min=[min(row)for row in array]print(row _ min)
上面这段代码的作用是求二维数组array(实际上是列表内嵌在列表中)每一行的最小值,只用了一段代码。
2.在列表的循环中使用if条件names _ list=[Washington , Trump , Obama , Bush , Clinton , Reagan ]L1=[name for name in names _ list if name . starts with( W )]l2=[name for name in names _ list if name . starts with( W )or len(name)5]l3=[name for name in names _ list if len(name)5 and name . is lower()]print(L1,L2,L3)
我们发现if条件也可以方便地用在list循环中。这里,我们在for循环的末尾使用if条件语句。如果改成传统的for循环语法,可能要加很多行业代码。
3.使用更复杂的表达方式names _ list=[Washington , Trump , Obama , Bush , Clinton , Reagan] #将带有new _ names的人的姓名首字母大写=[name . capital()for names _ list]print(new _ names)
这里,我们列表中的表达式使用了循环项名称的方法capitalize()。让我们看另一个例子:
my_list=[ 表达式(if...else条件) for 循环项 in 循环体 ]
Names _ list=[华盛顿,特朗普,奥巴马,布什,克林顿,里根] #使用if条件new _ names=[name if name。表达式中name _ list]的名称以( t) else not president 开头。
之前,我们在for循环的末尾添加了if条件,但是我们也可以在表达式中使用if条件语句。这里需要指出的是,表达式中的if条件语句必须同时使用else语句,这与之前在for循环末尾添加if条件是不同的。这是因为表达式中的if语句必须遵循python语法来为变量赋值,例如:
A=1b=2 if a0 #语法错误b=2 if a 0 else -1 4。可以在list中使用嵌套for循环语法。让我们看一个例子:
Names _ list=[Trump , Obama , Clinton ]# double for loop chars=[c for name in names _ list for c in name]print(chars)
下面是传统的两层for循环语句:
Names _ list=[Trump , Obama , Clinton] #传统的双层for循环需要4个代码chars=[]for name in names _ list:for c in name:chars . append(c)print(chars)。我们看到传统的双层嵌套for循环需要4段代码,而list中的双层for循环只有当然,传统代码的可读性比list中的loop语句要好,所以不建议在list中添加太多for循环,这样会使代码的可读性变差。
此外,我们还可以在两层for循环中间使用if条件:
Names _ list=[Trump , Obama , Bush] #可以在两层for循环中间使用if条件chars=[char for name in names _ list if len(name)5 for char in name]print(chars)。
5.尽量避免使用map()和filter()等内置函数。python有一些内置的函数,比如map()和filter()。这些内置函数很好用,但是有可读性差,不容易理解的缺点。一个好习惯是尽量在list中使用for循环,而不是这些内置函数。甚至python作者也这样建议。你可以看看这篇文章(https://www.artima.com/weblogs/viewpost.jsp?Thread=98196),因为这样做可以让代码可读性更好。
map()函数可以替换为如下形式:
#地图功能
L=贴图(函数,圆形体)
#替换为:
L=[func(a) for a in循环]
Array=[[16,3,7],[2,24,9],[4,1,12]] row _ min=map (min,array) print (list (row _ min)) #替换为row _ min=[min(row)for row in array]print
filter()函数可以替换为:
#过滤功能
L=过滤器(condition_func,循环体)
#替换为
L=[a for a in循环体if条件]
Names _ list=[Trump , Obama , Bush] # filter函数L1=filter(lambda name:len(name)5,names _ list) print (list (L1)) #替换为:L2=[name for name in names _ list if len(name)5]print
6.尝试使用Generator (Generator)变量来减少内存开销。在python中定义一个列表变量时,内存通常会立即分配给这个列表变量,这样会增加系统的内存开销。一种有效的方法是,只有在定义变量时,并且只有在实际使用变量时,才分配实际内存。这是我们的发电机变量。当定义生成器变量时,只需设置
#列表变量,立即分配实际内存L1=[x for x in range (1 _ 000 _ 000)] #生成器变量,不分配实际内存L2=(x for x in range (1 _ 000 _ 000))打印(L1。_ _ sizeof _ _())打印(L2。_ _ SII)
#列表变量L1=[w for w in range (10)] for I在L1: print (I) #被替换为生成器变量L2=(w for w in range (10)) for I在L2: print (I)结论在列表中使用for循环可以使代码简洁优雅,同时不要在列表中加入过多的for循环层,这样会使程序的可读性变差。我们应该尽量使用list的for循环,而不是map、filter等内置函数,因为这些内置函数也会让程序的可读性变差。最后,我们应该尽量使用生成器变量,因为它可以减少内存开销。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。