Python Learning 列表的更多操作及示例代码
遍历列表-for循环
列表中存储的元素可能非常多,如果想一个一个的访问列表中的元素,可能是一件十分头疼的事。那有没有什么好的办法呢?当然有!使用for循环
假如有一个食物名单列表,通过for循环将列表中的食物名称都打印出来
#定义一个食物名单列表 foods=['potato','tomato','noodles','apple','pizza'] #循环访问foods列表 forfoodinfoods: print(food)
输出:
potato tomato noodles apple pizza
for循环将foods列表中的元素依次输出了出来
forfoodinfoods:这行代码表示将foods列表中的元素依次取出,每次次元素的值赋给变量food;本句代码最后以冒号结尾
print(food)本行代码之前有四个字符的缩进,表示这行代码属于forfoodinfoods:的代码块
for循环每次从列表中取出一个元素后,都会进入代码块中执行一遍,即输出元素的名称;直到将列表所有的元素都遍历一次后,循环停止
#定义一个食物名单列表 foods=['potato','tomato','noodles','apple','pizza'] #循环访问foods列表 forfoodinfoods: print(food) #循环之外的代码 print('循环已经完毕') print('循环已经完毕')的前面没有缩进,说明它不属于for循环块中的代码;所以,当for循环完毕后,会接着执行下面的这句代码
输出:
potato
tomato
noodles
apple
pizza
循环已经完毕
其中,变量food是一个临时变量,可以随意取名称;不过建议取有意义的名称,在这里用foods表示食物列表,用food表示列表中的食物,方便理解
循环也可以嵌套使用
假如小明喜欢一些食物,这些食物名称被存储到foods1列表中;小红喜欢另一些食物,这些食物名称被存储到foods2中;现在想知道小明与小红所喜欢的食物是否有相同的,则可用如下方式:
#小明喜欢的食物列表 foods1=['potato','tomato','noodles','apple','pizza'] #小红喜欢的食物列表 foods2=['chocolate','pizza','maize','watermelon'] #通嵌套循环寻找出两个列表中相同的食物名称 forfood1infoods1: forfood2infoods2: iffood1==food2: print('小明和小红共同喜欢的食物是',food1)
输出:
小明和小红共同喜欢的食物是pizza
forfood2infoods2:前面有缩进,说明它是forfood1infoods1:块中的代码;第一外循环从小明喜欢的食物列表中依次取出食物名称,然后进行自身的代码块中;第二行代码依次遍历小红喜欢的食物列表,然后进行循环体(代码块),然后判断foods1中的第一个元素与foods2中的第一个元素是否一样,foods1中的第一个元素与foods2中的第二个元素是否一样,……,foods1中的第一个元素与foods2中的第四个元素是否一样,如果一样,则执行打印print('小明和小红共同喜欢的食物是',food1);接着判断foods1中的第二个元素与foods2中的第1个元素是否一样,……,foods1中的第二个元素与foods2中的第四个元素是否一样,如果一样,则执行打印print('小明和小红共同喜欢的食物是',food1)……直到判断到foods1中的第五与foods2的所有元素比较一次后,嵌套循环执行完毕
注:if表示判断一个结果,如果结果是真,则执行代码块,如果不是真,则跳过代码块;==表示判断两个值是否相等,如果相等返回真,如果不相等返回假。这两个知识点将在后面进行详细探讨
在写for循环语句的时候,造成别忘记在后面加上冒号,循环体中的代码千万别忘记添加缩进;缩进一般是一个制表符的距离,即四个空格的距离;不过,不建议将制表符与空格符混合使用
创建数值列表-range()
前面的列表中的元素都是字符串类型的,列表中可以存储任意对象,现在定义一个数值列表
numbers=[1,2,3,4,5]
如果想定义一个从1到1000的数值列表,手动将这些数值一个一个写进列表里,一点也不高效;可以使用函数range()快速创建一系列数字
forvalueinrange(1,6): print(value)
输出:
rnage(1,6)会生成从1到5的数字,6表示到6的时候就停止创建动作,如果想创建1到1000的数字,则是range(1,1001)
通过list()可以将range()创建的数字转换成列表
#输出range()看看 numbers=range(1,6) print('range:',numbers) #转换成列表后,再输出看看 numbers=list(numbers) print('list:',numbers)
输出:
range:range(1,6) list:[1,2,3,4,5]
可以看出,range()返回的是一个可迭代对象,经过转换后才是一个列表对象
还可以通过指定步长,来生成一系列偶数
numbers=range(2,21,2) print(list(numbers))
输出:
[2,4,6,8,10,12,14,16,18,20]
range(start,stop[,step])这是Python的使用说明文档中关于range()的使用说明,start表示从哪个数字开始,stop表示到哪个数字停止,[,step]表示步长,方括号表示这个参数是可选的,即可写可不写
可以在Python的IDLE中输入help(range)来得到关于range()的帮助文档
>>>help(range)
一些简单的、常用的数字列表统计函数:
#定义一个偶数列表 numbers=list(range(2,21,2)) #求数值列表中最小的元素值 print(min(numbers)) #求数值列表中最大的元素值 print(max(numbers)) #求数值列表所有元素的和 print(sum(numbers))
输出:
列表解析
直接看下面代码
#定义一个偶数列表 numbers=list(range(2,21,2)) squares=[value**2forvalueinnumbers] print(squares)
输出:
[4,16,36,64,100,144,196,256,324,400]
for循环的这种写法squares=[value**2forvalueinnumbers]叫做列表解析
首先,写一对中括号,它表示一个列表;然后列表中分类两部分,第一个部分是表达式,即value**2,这个表达的意思是计算一个值的乘方;第二部分是列表循环,即forvalueinnumbers;最终结果是将列表中的每个值都按乘方计算一次后,放入一个列表中,再赋值给变量squares
这里需要注意的是,循环后面没有冒号,可以理解为将循环体的代码块精简成了一个表达式
列表切片
只获取列表的部分元素,这样的操作叫作切片
切片通过列表的索引进行操作,即从哪个索引开始,到哪个索引结果,将这段元素取出
#定义一个食物列表 foods=['potato','tomato','noodles','apple','pizza'] #取出第二个元素到第四个元素 print(foods[1:4])
输出:
['tomato','noodles','apple']
foods[1:4]方括号中的1表示索引1位置,4表示索引4位置;需要注意的是,1表示从索引1开始,而4表示到索引4就结束;也就说,索引4位置的元素不会返回;所以,这里返回的结果是从索引1到索引3的三个元素
如果省略冒号前的数字,则表示从开始的位置取值
#从索引0开始,取到索引4之前的所有值 foods[:4] 如果省略冒号后的数字,则表示一直取到列表的末尾 #从索引1开始,一下取到列表结束的位置 foods[1:] 如果只有冒号,表示取所有数据 #取所有数据 foods[:]
还可能使用负数
#从倒数3个元素开始,一直取到末尾
foods[-3:]
for循环与切片的结合
#定义一个食物列表 foods=['potato','tomato','noodles','apple','pizza'] #打印第2个到第4个元素 forfoodinfoods[1:4]: print(food)
输出:
tomato noodles apple
关于列表的复制
先来看个例子
foods1=['potato','tomato','noodles','apple','pizza'] foods2=foods1 print(foods1) print(foods2)
将foods1列表赋值给foods2列表,看似是一个复制动作,但foods1与foods2实际上是一个对象
foods1=['potato','tomato','noodles','apple','pizza'] foods2=foods1 foods1.append('chocolate') print(foods1) print(foods2)
输出结果:
['potato','tomato','noodles','apple','pizza','chocolate'] ['potato','tomato','noodles','apple','pizza','chocolate']
因为,['potato','tomato','noodles','apple','pizza']创建了一个列表对象,foods1变量与foods2变量实际存储的是指向['potato','tomato','noodles','apple','pizza']的一个引用,所以,修改foods1后,发现food2也变了
复制需要另外创建出一个一模一样的对象出来,但它们必须的确是两个对象才行
foods1=['potato','tomato','noodles','apple','pizza'] foods2=foods1[:] foods1.append('chocolate') print(foods1) print(foods2)
输出:
['potato','tomato','noodles','apple','pizza','chocolate'] ['potato','tomato','noodles','apple','pizza']
foods1[:]返回foods1所有的元素,并创建了一个副本,这个副本是另一个对象,然后再会给了foods2,因此在更改foods1时,没有影响到副本
也可以使用id(foods1);id(foods2)来查看列表对象在计算机内的ID,ID不同,则不是同一个对象
简单谈一下元组
元组的使用与列表类似,不同的,列表是可改变的,而元组不是可改变的;列表用[]来定义,元组则使用()来定义
#定义一个元组 numbers=(1,2,3,4,5) #支持索引访问 print(numbers[1]) #支持循环 fornumberinnumbers: print(number) #不支持对元素的修改,执行下面代码会报错 numbers[0]=11
报错内容
Traceback(mostrecentcalllast): File"C:/Users/Administrator/Desktop/s.py",line11,in
numbers[0]=11 TypeError:'tuple'objectdoesnotsupportitemassignment
下面看一段示例代码thedayofpythonlearning(列表)
列表是python中的基础数据类型之一,其他语言中也有类似于列表的数据类型,比如js中叫数组,他是以[]括起来,每个元素以逗号隔开,而且他里面可以存放各种数据类型比如: li=[‘alex',123,Ture,(1,2,3,'wusir'),[1,2,3,'小明',],{‘name':'alex'}] 列表相比于字符串,不仅可以储存不同的数据类型,而且可以储存大量数据,32位python的限制是536870912个元素,64位python的限制是1152921504606846975个元素。而且列表是有序的,有索引值,可切片,方便取值。 #li=['alex',[1,2,3],'wusir','egon','女神','taibai'] #l1=li[0] #print(l1)#“alex‘ #l2=li[1]#[1,2,3] #print(l2) #l3=li[0:3]#['alex',[1,2,3],'wusir'] #print(l3) li=['alex','wusir','egon','女神','taibai'] #增加append()insert() #li.append('日天') #li.append(1) #print(li) #while1: #username=input('>>>') #ifusername.strip().upper()=='Q': #break #else: #li.append(username) #print(li) #li.insert(4,'春哥') #print(li) #li.extend('二哥') #li.extend([1,2,3]) #print(li) #删 li=['taibai','alex','wusir','egon','女神',] #name=li.pop(1)#返回值 #name=li.pop()#默认删除最后一个 #print(name,li) #li.remove('taibai')#按元素去删除 #print(li) #li.clear()#清空 #print(li) #delli #delli[0:2]#切片去删除 #print(li) #改 #li[0]='男兽' #li[0]=[1,2,3] #切片 #li[0:3]='云姐plfdslkmgdfjglk' #li[0:3]=[1,2,3,'春哥','咸鱼哥'] #print(li) #查 #foriinli: #print(i) #print(li[0:2]) #公共方法: #l=len(li) #print(l) #num=li.count('taibai') #print(num) #print(li.index('wusir')) #li=[1,5,4,7,6,2,3] ##正向排序 ##li.sort() ##print(li) ##反向排序 ##li.sort(reverse=True) ##print(li) ##反转 #li.reverse() #print(li) #列表的嵌套 li=['taibai','武藤兰','苑昊',['alex','egon',89],23] #print(li[1][1]) #name=li[0].capitalize() ##print(name) #li[0]=name #li[0]=li[0].capitalize() #li[2]='苑日天' #print(li[2].replace('昊','ritian')) #li[2]=li[2].replace('昊','ritian') #li[3][0]=li[3][0].upper() #print(li)
总结
以上所述是小编给大家介绍的PythonLearning列表的更多操作及示例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!