Python知识点3——列表操作

for循环

1.for循环遍历列表

chars=['q','w','e','r','t']
for char in chars:
	print(char)

这三行代码中,for循环会依次读取列表中的元素,并存储到循环变量char中,最后打印

 

注意点

1.循环变量名称最好和列表名称呈现单复数关系,比如char 和 chars、cat和cats等,便于识别(只是个命名规范)

2.循环语句最后的那个冒号(:)不能省

 

2.range()函数

for num in range(0,6):
	print(num)

range()函数的打印范围是左闭右开(从第一个数开始打印,打印到第二个数时停止,不包括第二个数)

 

3.用list()和range()函数创建数字型列表

nls=list(range(0,10))
for nl in nls:
	print(nl)
 print(nls)

range()函数还可以指定步长,比如,打印0-10中的所有偶数

print(list(range(0,12,2)))

range(0,12,2)从0开始,然后不断+2,直到大于等于12为止,同样左闭右开

 

生成偶数平方的列表,同时打印最值和列表总和

squares=[]
for square in range(0,11,2):
	squares.append(square**2)
print(squares, min(squares), max(squares), sum(squares))

上述代码用了三行生成了一个列表,如果用列表解析式的话,只需要一行

squares1=[value**2 for value in range(0,11,2)]
print(squares1)

for value in range(0,11,2)将循环变量提供给value**2, 从而生成squares1

 

切片

切片就是列表元素中的一部分

print(squares1[:]])#打印出所有列表元素
print(squares1[0:3])#打印出索引为0,1,2的三个元素,不包括3
print(squares1[1:4])#打印出索引为1,2,3的三个元素,不包括4
print(squares1[:4])#从头打印出列表元素,不包括索引4
print(squares1[2:])#从索引2的元素打印到最后
print(squares1[-3:])#从倒数第三个元素打印到最后
print(squares1[:-2])#从头打印到倒数第三个元素,不包括倒数第2个元素

print(squares1[0:3:2])#从零不断+2打印元素,直到大于等于三为止(不包括索引为3的元素)
print(squares1[1:4:2])
print(squares1[:4:2])#从零不断+2打印元素,直到大于等于4为止(不包括索引为4的元素)
print(squares1[2::2])#从2不断+2打印元素,如果最后一个元素不被跳过,打印,否则不打印
print(squares1[-3::2])#从倒数第三个元素不断+2打印元素,如果最后一个元素不被跳过,打印,否则不打印
print(squares1[:-2:2])#从零不断+2打印元素,直到大于等于倒数第二个元素的索引为止(不包括倒数第二个的元素)

其实通过实验可以发现,切片的性质和range函数非常类似,都是左闭右开(如果冒号两边都有数字,不包含冒号右边索引所代表的元素)

添加步长之后,性质也和range是一样的,不断+步长,直到大于等于冒号右边的索引为止(不包括索引所表示的元素)

 

遍历切片

切片虽然是列表的一部分,但是也是列表,所以就能遍历,也能用列表解析式生成新的列表

for square in squares[1::2]:
	print(square)

 

newlist=[square**2 for square in squares[1::2]]
print(newlist)

列表的复制

列表的复制有两种方式,第一种是使用切片赋值,第二种是使用列表名称赋值,两种方式的区别在哪?

newlist1=newlist[:]
newlist2=newlist;
print(newlist, newlist1, newlist2);

从上面的结果上来看,我们看不出任何却别,但是,当我们修改newlist或newlist2中的元素时,情况发生了变化

newlist1=newlist[:]
newlist2=newlist;
print(newlist, newlist1, newlist2);
newlist[0]=2
print(newlist, newlist1, newlist2);
newlist2[0]=39
print(newlist, newlist1, newlist2);

此时,无论修改newlist2和newlist中的哪一个,newlist2和newlist都同时发生了变化,而newlist1没有任何变化

所以

当使用原来列表的切片来将整个列表复制到一个新的列表的时,新的列表是原来列表的副本,新的列表和原来列表值虽然相同,但是是两个不同的列表,不同的变量

但是,当使用列表名来复制整个列表到一个新的列表时,两个列表名都指向同一个列表,所以,当修改其中一个的列表时,另一个列表也跟着被修改

 

元组

元组和列表只有两点不同:

1,元组使用的是小括号()括起来,而列表使用的是中括号[]。

2,元组中的元素不能被修改,列表可以。

ts=(1,2,3,4,5)
for t in ts:
	print(t)

t[2]=20

当修改元组中的元素时,会报错

 

虽然元组中的元素不能被修改,但是元组可以被整体修改

ts=(1,2,3,4,5)
print(ts)
ts=(10,20)
print(ts)

参考书籍:《Python编程从入门到实践》

欢迎大家评论交流,作者水平有限,如有错误,欢迎指出

发布了7 篇原创文章 · 获赞 9 · 访问量 8633

猜你喜欢

转载自blog.csdn.net/Master_Cui/article/details/105332447