Bootstrap

python学习第四章:for循环如何遍历列表?切片的概念?如何利用元组?

4.1 遍历整个列表

对列表中的每个元素都执行相同的操作时,可使用Python中的for循环

输入:

cars = ['mazda' , 'toyota' , 'nissan' , 'mitsubtshi']
for car in cars:                #这行代码每次让python获取列表cars中的第一个值让它与car相互关联
                                #car是变量cars是遍历对象
	print(car)        


                                     #注意for循环的格式
                               

输出:

mazda
toyota
nissan
mitsubtshi
[Finished in 79ms]

以上,为使用for循环来打印出汽车品牌名单的所有名字

4.1.1 采用for循环执行更多操作

利用第二、第三章知识我们进行一个小小的结合:采用列表+for循环+字符串+title

输入:

cars = ['mazda' , 'toyota' , 'nissan' , 'mitsubtshi']
for car in cars:
	print(f"you like this {car.title()}")
	print(f"{car.title()} is very good!!!\n")

print("for end of loop") #for循环结束后执行其他操作

输出:

you like this Mazda
Mazda is very good!!!

you like this Toyota
Toyota is very good!!!

you like this Nissan
Nissan is very good!!!

you like this Mitsubtshi
Mitsubtshi is very good!!!

for end of loop
[Finished in 76ms]

关于for循环的缩进间距需要注意一下

4.2 避免缩进错误

for循环里的一些小才坑点需要留意三个小点

# 1)忘记缩进:
#输入:
cars = ['mazda' , 'toyota' , 'nissan' , 'mitsubtshi']
for car in cars:
print(car)

#输出:
IndentationError: expected an indented block
[Finished in 78ms]
#解决办法,在print前打上空格或tab一步到位



# 2)忘记缩进格外的代码
#输入:
cars = ['mazda' , 'toyota' , 'nissan' , 'mitsubtshi']
for car in cars:
	print(f"you like this {car.title()}")
print(f"{car.title()} is very good!!!\n")

#不是我们想要的输出:
you like this Mazda
you like this Toyota
you like this Nissan
you like this Mitsubtshi
Mitsubtshi is very good!!!
[Finished in 80ms]

#我们想要的输出:
you like this Mazda
Mazda is very good!!!

you like this Toyota
Toyota is very good!!!

you like this Nissan
Nissan is very good!!!

you like this Mitsubtshi
Mitsubtshi is very good!!!

[Finished in 77ms]
#解决办法,在需要的print前打上空格或tab一步到位



# 3)遗漏了冒号
#输入:
cars = ['mazda' , 'toyota' , 'nissan' , 'mitsubtshi']
for car in cars
	print(car)

#输出:
SyntaxError: invalid syntax                #语法错误
[Finished in 77ms]
#解决办法,for car in cars后补上冒号




4.3 创建数值列表

4.3.1 生成一些列数——range(),把数转成列表——list()

rang的三种用法:

1). range(x)——等价于rang(0,x)                          2).range(x,y)                                 3). range(x,y,z)

#第一种range(x)————默认重0开始数
for value in range(6):                 
	print(value)


#第二种range(x,y)————默认重0开始数
for value in range(2,6):
	print(value)


#第三种range(x,y,z)————最后的z表示间距
for value in range(0,6,2):
	print(value)

for value in range(0,6,1):
	print(value)

对应输出:

0
1
2
3
4
5


2
3
4
5


0
2
4


0
1
2
3
4
5
[Finished in 73ms]

4.3.2 使用range()创建数字列表

也就是使用到我们的list()

numbers = list(range(0,10,2))
print(numbers)

[0, 2, 4, 6, 8]
[Finished in 76ms]

这里举出一个任务我们来完成:创建一个列表,其中包含前10个整数(1~10)的平方

输入:

numbers_squares = []
for value in range(1,11):
	square = value ** 2
	numbers_squares.append(square)
print(numbers_squares)


输出:

[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
[Finished in 75ms]

4.3.3 对数字列表执行简单的统计计算

digits函数专门用于处理数字列表的函数,我们可以通过它来找出最大值、最小值、总和

输入:

digits = [0,1,2,3,4,5,6,7,8,9]
min = min(digits)	#最小值
print(min)

max = max(digits)	#最大值
print(max)
sum = sum(digits)	#总和
print(sum)

输出:

0
9
45
[Finished in 76ms]

4.3.4 列表解析(可以更好的优化我们的代码)

根据4.3.2的任务,关于创建一个列表,其中包含前10个整数(1~10)的平方的代码,我们在这里进行优化:

输入的优化:

numbers_squares = [value ** 2 for value in range(1,11)]
print(numbers)

首先指定一个描述性的列表名,然后再定义一个表达式用于生成要存储到列表中的值(这里表达式是value**2),接下来,编写一个for循环,用于给表达式提供值。

4.4 使用列表的一部分

4.4.1切片

索引重0开始数,冒号前为索引起始值,冒号后为索引终点值 = 列表值第n个
输入:

#打印列表中第1、2、3个元素对应的索引为(0、1、2)
cars = ['mazda' , 'toyota' , 'nissan' , 'mitsubtshi']
print(cars[0:3])


#打印列表中第2、3个元素对应的索引为(1、2)
cars = ['mazda' , 'toyota' , 'nissan' , 'mitsubtshi']
print(cars[1:3])


#打印列表中第3、4个元素
cars = ['mazda' , 'toyota' , 'nissan' , 'mitsubtshi']
print(cars[:4])
cars = ['mazda' , 'toyota' , 'nissan' , 'mitsubtshi']
print(cars[0:4])


#打印列表中第2、3个元素
cars = ['mazda' , 'toyota' , 'nissan' , 'mitsubtshi']
print(cars[2:])
cars = ['mazda' , 'toyota' , 'nissan' , 'mitsubtshi']
print(cars[2:4])


#打印列表中的最后3个元素(负数索引)
cars = ['mazda' , 'toyota' , 'nissan' , 'mitsubtshi']
print(cars[-3:])


#让python每隔2个元素就提取2个
cars = ['mazda' , 'toyota' , 'nissan' , 'mitsubtshi']
print(cars[0:4:2])

输出:

#打印列表中第1、2、3个元素对应的索引为(0、1、2)
['mazda', 'toyota', 'nissan']


#打印列表中第2、3个元素对应的索引为(1、2)
['toyota', 'nissan']



#打印列表中第3、4个元素
['mazda', 'toyota', 'nissan', 'mitsubtshi']
['mazda', 'toyota', 'nissan', 'mitsubtshi']



#打印列表中第2、3个元素
['nissan', 'mitsubtshi']
['nissan', 'mitsubtshi']



#打印列表中的最后3个元素(负数索引)
['toyota', 'nissan', 'mitsubtshi']



#让python每隔2个元素就提取2个
['mazda', 'nissan']
[Finished in 74ms]

4.4.2遍历切片

任务:打印出一下结果

This my love:

Mazda

Toyota

Nissan

输入:

cars = ['mazda' , 'toyota' , 'nissan' , 'mitsubtshi']
print("This my love:")
for car in cars[0:3]:
	print(car.title())

输出:

This my love:
Mazda
Toyota
Nissan
[Finished in 76ms]

4.4.3 复制列表(切片去掉起始值和终点值)

输入:

cars = ['mazda' , 'toyota' , 'nissan' , 'mitsubtshi']
my_cars = cars[ : ]

print(cars)
print(my_cars)

输出:

['mazda', 'toyota', 'nissan', 'mitsubtshi']
['mazda', 'toyota', 'nissan', 'mitsubtshi']
[Finished in 76ms]

这样复制的列表我们可以分别对某一个表进行操作且不影响。

4.5 元组

4.5.1 元组的定义——不可修改的列表用索引即可访问,标识为圆括号而不是方括号

输入:

dimensions = (20,3,1)
print(dimensions[2])
print(dimensions[0])

输出:

1
20
[Finished in 75ms]

4.5.2 遍历元组中的所有值

输入:

dimensions = (20,3,1)
for dimension in dimensions:
	print(dimension)

输出:

20
3
1
[Finished in 72ms]

4.5.3 修改元组中的变量

输入:

dimensions = (100,200)
print("\nwei xiu gai qian de yuan zu:")
for dimension in dimensions:
	print (dimension)

dimensions = (300,400)
print("\nxiu gai hou de yuan zu:")
for dimension in dimensions:
	print (dimension)

输出:

wei xiu gai qian de yuan zu
100
200

xiu gai hou de yuan zu
300
400
[Finished in 73ms]

这里相当于重新给变量赋值,虽然不能通过索引对某一个值进行修改,但是还是可以修改的,如果需要存储的一组值在程序的整个生命周期内都不变,更推荐使用元组。

下课啦^^!,明天加油争取肝两节

                                  ———— 参考书籍Python编程:从入门到实践(第2版)埃里克·马瑟斯/袁国忠译

;