一、遍历列表
1、在遍历数组或者列表的时候,我们首先想到的就是循环结构,常用的也就是for循环了,所以在python在遍历列表时,我们也用for
(1) magicians =['alice','david','carolina']
(2) for magician in magicians:
(3) print(magician)
首先在(1) 定义一个列表,由 python编程基础(二):列表 中,我们在定义一个列表名称时最好是定义成复数的名称,比如本例子中magicians
其次在(2)行,使用for,此句末尾一定要加冒号" : ",此句表示的是从 magicians 中依次取出元素,并赋值给magician这个变量。这种命名就可以看成,复数表示的是一个集合,而单数表示的就是集合中的元素。
在(3)行,将存储在magician中的信息打印出来
注意:在使用循环时,选择描述单个列表元素的有意义的名称大有帮助,比如:小猫列表,小狗列表,一般列表,可以使用下面的定义名称的方式:
for cat in cats:
for dog in dogs:
for item in list_of_items:
二、创建数值列表
1、使用函数 range()产生一系列数字
for value in range(1,5):
print(value)
结果:
1
2
3
4
可以观察到,虽然程序写的是range(1,5) 但是不会生成5,只能到4,注意,如果使用range(10)意思是生成0-9的10个数
total = 0
for number in range(30):
print(number)
total = total + 1
print(total)
结果:
0
1
2
3
4
5
6
7
8
9
2、使用range() 创建数字列表
(1)、用 list() 来生成
numbers = list(range(1,6))
print(numbers)
结果:
[1,2,3,4,5]
(2)、生成其他特殊的列表
for value in range(1,11):
squares.append(value**2)
print(squares)
结果:
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
其实可以使用列表解析来实现,实现起来更加简洁方便。如下:
列表解析是将 for 循环 和创建新元素的代码合并在一起
squares = [value**2 for value in range(1,11)]
print(squares)
结果:
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
注意在使用 列表解析的时候 for 循环后面就没有冒号
3、对列表中的数据做简单统计
digits = list(range(1,10))
digits.append(0)
print(digits)
min_digit = min(digits)
print(min_digit)
max_digit = max(digits)
print(max_digit)
sum_digit = sum(digits)
print(sum_digit)
结果:
[1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
0
9
45
可以用 min() max() sum(),来求列表中的最小值、最大值、求和
三、使用列表中的一部分(切片)
1、切片
与range相同,不会到达设定的结束索引,因此在创建切片的时候再最后的索引上加1,比如像索引列表中前3个变量,那么索引范围不能是(0,2),而应该是(0,3)这样才是列表中的前三个:0 1 2
players = ['aaa','bbb','ccc','ddd','eee','fff','jjj','hhh','iii']
print(players[1:4]) # 打印 2~4 的元素
print(players[:4]) # 由于没有起始索引,因此就会从列表开头开始
print(players[2:]) # 由于没有终止索引,因此就截止到列表结束
print(players[-3:]) # -3 表示从倒数第3个变量开始
结果:
['bbb', 'ccc', 'ddd']
['aaa', 'bbb', 'ccc', 'ddd']
['ccc', 'ddd', 'eee', 'fff', 'jjj', 'hhh', 'iii']
['jjj', 'hhh', 'iii']
2、遍历切片
可以使用 for 循环来遍历切片
players = ['aaa','bbb','ccc','ddd','eee','fff','jjj','hhh','iii']
for player in players[:3]:
print(player)
结果:
aaa
bbb
ccc
切片索引是[:3],因此就是 0 1 2 表示列表的前三个
3、复制列表
在列表的复制时,一定要使用如下的形式:
列表1 = 列表2[ : ] %此时是完成了列表的复制
而不能直接相等,如下:
列表1 = 列表2 % 此时只是将列表1 关联到 列表2;其实列表1 跟 列表2 表示的是同一个向量
my_foods = ['aaa','bbb','ccc','ddd']
friend_foods = my_foods[:]
my_foods.append('ssd')
friend_foods.append('wer')
print("my")
print(my_foods)
print("you")
print(friend_foods)
结果:
my
['aaa', 'bbb', 'ccc', 'ddd', 'ssd']
you
['aaa', 'bbb', 'ccc', 'ddd', 'wer']
可以发现使用 列表1 = 列表2[ : ] 结果是有两个列表,若使用列表1 = 列表2 则不一样
my_foods = ['aaa','bbb','ccc','ddd']
friend_foods = my_foods
my_foods.append('ssd')
friend_foods.append('wer')
print("my")
print(my_foods)
print("you")
print(friend_foods)
结果:
my
['aaa', 'bbb', 'ccc', 'ddd', 'ssd', 'wer']
you
['aaa', 'bbb', 'ccc', 'ddd', 'ssd', 'wer']
可以发现,这种情况下,friend_foods 和 my_foods 表示的是一个列表
四、元组
不可变的列表就是元组
元组看起来像是 列表 但是元组是使用 圆括号来标识,而非是方括号。
元组:
dimensions = (200,100)
lists=[200,100]
1、定义元组
dimensions = (200,100)
print(dimensions[0])
print(dimensions[1])
结果:
200
100
2、修改元组
元组是不允许修改其中的元素的,但是可以给他的变量做赋值
dimensions = (200,100)
#dimensions[0] = 500 这样是不行的额,不能修改元组中的元素
print(dimensions[0])
print(dimensions[1])
dimensions = (300,700)
print(dimensions[0])
print(dimensions[1])
结果:
200
100
300
700