Python编程:从入门到实践(学习笔记-Charpter4)

Python编程:从入门到实践(学习笔记-Charpter4)

五月 18, 2019

Chapter 4 : 操作列表

4.1遍历整个列表

for x in y: 循环:

1
2
3
magicians = ['alice', 'david', 'carolina']
for magician in magicians:
print(magician)
1
2
3
4
5
6
magicians = ['alice', 'david', 'carolina']
for magician in magicians:
print(magician.title() + ', that was a great trick!')
print("I can't wait to see your next trick, " + magician.title() + ".\n")

print("Thank you, everyone. That was a great magic show!")

注:1.避免缩进错误(忘记缩进、忘记缩进额外的代码行、不必要的缩进、循环后不必要的缩进)

​ 2.遗漏了冒号

4.2创建数值列表

  • range( ) 生成一系列数字
1
2
3
4
5
6
7
8
9
for value in range(1,5):
print(value)

-------
1
2
3
4
#差一行行为(打印到5前一个数4停止),5本身不打印
  • list() 和 range() 一起创建数字列表
1
2
3
4
5
6
numbers = list(range(1,6))
print(numbers)

------
[1, 2, 3, 4, 5]
# 使用list()函数将range()的结果直接转换成为 列表
  • range()指定步长打印
1
2
3
4
5
6
7
even_numbers = list(range(2,11,2))
print(even_numbers)

-----
[2, 4, 6, 8, 10]
#range( 初始值,结束值,步长 )
#函数range()从2开始,然后不断加2,直到超过最终值11停止
1
2
3
4
5
6
7
8
9
squares = []  #创建一个空列表
for value in range(1,11):
squares.append(value**2)

print(squares)

------
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
#在循环中,计算每个值的平方,并立即将结果附加到列表squares的末尾

4.3对数字列表统计计算

  • 最大值max()、最小值min()、总和sum()
1
2
3
4
5
6
7
>>> digits = list(range(0,10))
>>> min(digits)
0
>>> max(digits)
9
>>> sum(digits)
45

4.4列表解析

1
2
3
4
5
6
7
8
9
squares = [value**2 for value in range(1,11)]
print(squares)

------
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
#首先,指定一个列表名squares
#然后,指定一个方括号,并定义一个表达式(value**2),用于生成你要储存到列表的值
#接下来,编写一个for循环,给表达式提供值,再加上右边的方括号
#注意,在这个解析式子里,for 语句末尾没有冒号

4.5对列表一部分处理

  • 切片 :可指定要使用的第一个元素和最后一个元素的索引(遵守差一原则)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
players = ['charles', 'martina', 'micheal', 'florence', 'eli']
# 【0】 【1】 【2】 【3】 【4】
print(players[0:3])

------
['charles', 'martina', 'micheal']
#1. 打印了该列表的一个片段,其中只包含三名队员,输出也是一个列表

#2. 可以任意生成列表的任何子集,如 提取列表的第2~4个元素,可将起始索引指定为1,并将终止索引指定为4:
print(players[1:4])

''' 技巧: 提取i~j元素, 则players[i-1 , j] '''

#3. 没有指定第一个索引,Python将从列表开头开始:
print(players[:4])
['charles', 'martina', 'micheal', 'florence']
>>>

#4. 没有指定终止索引,可以一直提取到最后一个元素终止
print(player[2:])
['micheal', 'florence', 'eli']
>>>

#5. 负索引返回离列表末尾相应距离的元素
print(players[-3:])
['micheal', 'florence', 'eli']
>>>
  • 遍历切片
1
2
3
4
5
6
7
8
9
10
11
players = ['charles', 'martina', 'micheal', 'florence', 'eli']

print("Here are the first three players on my team:")
for player in players[:3]:
print(player.title())
------
Charles
Martina
Micheal
>>>
#for循环,遍历前三名队员,并打印他们的名字

4.6复制列表

复制列表,可创建一个包含整个列表的切片,方法是同时省略起始索引和终止索引 [ : ]

让Python创建一个始于第一个元素,终止于最后一个元素的切片,即完成了复制整个列表。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
my_foods = ['pizza', 'falafel', 'carrot cake']
friend_foods = my_foods[ : ]

print("My favorite foods are: ")
print(my_foods)

print("\nMy friend's favorite foods are:")
print(friend_foods)

---------
My favorite foods are:
['pizza', 'falafel', 'carrot cake']

My friend's favorite foods are:
['pizza', 'falafel', 'carrot cake']
-------

#增加食品名单
my_foods.append('cannoli')
friend_foods.append('ice cream')

#两个独立的列表

这样写不是独立的两个列表,行不通

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
my_foods =['pizza', 'falafel', 'carrot cake']

#行不通
friend_foods = my_foods #( X )

my_foods.append('cannoli')
friend_foods.append('ice cream')

print("My favorite foods are: ")
print(my_foods)

print("\nMy friend's favorite foods are:")
print(friend_foods)

#以上输出的结果是一样的
------
My favorite foods are:
['pizza', 'falafel', 'carrot cake', 'cannoli', 'ice cream']

My friend's favorite foods are:
['pizza', 'falafel', 'carrot cake', 'cannoli', 'ice cream']
------

'''
这里将my_foods赋给fried_foods,而不是将my_foods的副本存储到friend_foods,
这种语法实际上是让Python将新变量friend_foods关联到包含在my_foods中的列表,
因此这两个变量都指向同一个列表中
'''

4.7元组 ( )

定义:无法修改的值称为不可变的,不可变的列表称为元组

1
2
3
4
5
6
7
8
dimensions = (200, 50)
print(dinmensions[0])
print(dinmensions[1])

#访问列表元素时使用的语法相同

#行不通 ,无法修改
dimensions[0] = 250 #( X )
  • 遍历元组中的所有值 ( for 循环)
1
2
3
dimensions = (200, 50)
for dimension in dimensions:
print(dimension)
  • 修改元组变量

虽然不能修改元组的元素,但可以给存储元组的变量赋值,因此,如果要修改,可以重新定义整个元组:

1
2
3
4
5
6
7
8
9
dimensions = (200, 50)
print("Original dimensions:")
for dimension in dimensions:
print(dimension)

dimensions = (400, 30)
print("\nModified dimensions:")
for dimension in dimensions:
print(dimension)

小结:相比列表,元组是更简单的数据结构,如果需要存储的一组值在程序的整个生命周期内都不变,可使用元组。

4.8设置代码格式(PEP8)

  • 缩进:每级需要用空四个空格来缩进

  • 行长:每行代码建议在80 字符之内

  • 空行:将程序的不同部分分开,可使用空行