本文使用的是Python3.6
一、遍历整个列表
在Python中,你经常需要遍历列表的所有元素,对每个元素执行相同的操作。我们可以用for循环来进行遍历操作,现在用几个例子来讲述for循环的使用:
magicians = ['alice', 'david', 'carolina']
for magician in magicians:
print(magician.title() + ", thar was a great trick")
在上面我们可以看到for循环的使用方法:
for + 变量名 + in + 列表:
代码
注意的地方是变量可以自己取,最好通俗易懂,然后for循环就会从列表中读取第一个元素,然后执行代码,再进入第二次循环,读取列表中第二个元素,再执行代码,以此类推,直到读取完列表,最后退出循环。
我们用个图来看一下循环是怎么执行的:
我们再举个例子:
numbers = [55, 34, 15, 26, 86, 72]
min_number = 100;
for number in numbers:
if min_number > number:
min_number = number
print("现在打印到了" + number)
print("这个列表的最小值是:" + min_number)
这是一个取最小值的程序,其中的if语句新手朋友可能看不懂但那并不是重点。
我们所要说的是在Python中程序的执行是从上往下执行的,从上述代码可以看出步骤:
- 定义列表numbers
- 定义整数型min_number
- 进入循环(包括循环中的语句)
- 退出循环
- 打印min_number
可以看出for循环和循环中的语句是一个代码块的,在Python中是靠缩进来分辨这句语句是谁的,如上代码所示,for语句的下一句是if语句,并且缩进了,所以这个if语句块是for循环的;同理,下一句是min_number = number,这句语句又缩进了一次,也就是它缩进了两次,所以它是属于if语句的;再下一句是print(“现在打印到了” + number),它只缩进了一次,所以它是属于for循环的;最后一句print(“这个列表的最小值是:” + min_number),没有缩进所以它是执行程序的语句。
一般来说,语句是属于谁的,就只有到谁才能执行。再看一次上面代码,在没有bug的情况下,没有缩进的语句是必定被执行的,有几次缩进的就不一定了,比如if语句,不过if语句是后面的内容。
二、忘记缩进额外的代码行
几个要点:
- 除非语法要求否则不要缩进
- 冒号不要忘了加,像for语句,if语句等都是要加冒号的
PS:由于冒号和分号是同一个键,两者又长的很像,注意不要打错了。
动手试一试:
# 4-1
pizzas = ['红烧肉', '宫保鸡丁', '北京烤鸭']
for pizza in pizzas:
print("我喜欢" + pizza + "!")
print("我喜欢吃!!")
# 4-2
animals = ['鸡', '鸭', '鹅']
for animal in animals:
print(animal)
print("鸡能走")
print("鸭能跑")
print("鹅能动")
print("它们都能吃")
233
三、创建数值列表
- 使用函数range()
range()可以生成一系列有序数字,具体操作如下:
# 普通创建方法
for index in range(0,10):
print(index)
# 有间隔的创建方法
for index in range(0,10,2):
print(index)
大家通过观察结果可以得出最后一个数字是不会被打印的。
- 使用range()创建数字列表,具体做法如下:
numbers = list(range(0,10,2))
print(numbers)
- 在Python中,有几个专门用于处理数字列表的Python函数,具体内容如下:
digits = list(range(0,10))
print(min(digits))
print(max(digits))
print(sum(digits))
看着大家都知道是什么函数了吧
4. 列表解析
书中代码:
squares = [value**2 for value range(1, 11)]
print(value)
在我的理解:
变量名 = [筛选条件 原始数据]
从上面的代码进行解析,可得知:
筛选条件是value**2,也就是对数值乘方后再加入列表
原始数据是range(1, 11),要一个一个提取出来,所以用for遍历
还有就是for语句中与筛选条件中的变量要相同,如上代码都是value
动手试一试:
# 4-3
for number in range(1, 21):
print(number)
# 4-4
numbers = list(range(1, 1000001))
for number in numbers:
print(number)
# 4-5
numbers = list(range(1, 1000001))
print("最小值为" + min(numbers))
print("最大值为" + max(numbers))
print("总和为" + sum(numbers))
# 4-6
numbers = list(range(1, 21, 2))
for number in numbers:
print(number)
# 4-7
# 方法一
numbers1 = list(range(3, 31, 3))
for number in numbers1:
print(number)
# 方法二
numbers2 = [value for value in range(3, 31) if value % 3 == 0]
for number in numbers2:
print(number)
# 4-8
# 方法一
numbers1 = []
for number in range(1, 11):
numbers1.append(number**3)
for number in numbers1:
print(number)
# 方法二
numbers2 = [value**3 for value in range(1, 11)]
for number in numbers2:
print(number)
# 4-9
# 容我复制粘贴一下
numbers2 = [value**3 for value in range(1, 11)]
for number in numbers2:
print(number)
四、使用列表的一部分
在本章中,主要内容是对列表的所有元素进行处理,还可以处理列表的部分元素——Python称之为切片。
- 切片
在Python中,使用[ : ]来切片,还是上代码吧。
players = ['charles', 'martina', 'michael', 'florence', 'eli']
print(players[0:3])
print(players[:2])
print(players[2:])
print(players[-3:])
没有指定索引的话,要不就从开头开始,要不就从结尾结束。
- 遍历切片
。。。原理差不多
players = ['charles', 'martina', 'michael', 'florence', 'eli']
for player in players[-3:]:
print(player)
- 复制列表
这里面就涉及到了深复制和浅复制,简单的说浅复制就只是起个外号而已,而深复制是一个全新的个体。
举个例子,旺财是一条狗,然后你给他起外号叫老王,后来,老王被炖了,请问旺财怎么了。
换一条世界线,旺财还是一条狗,后来你发现它失散多年的弟弟老王,于是你有了两条一模一样的狗。
这就是深复制和浅复制,我只是举个例子,爱狗人士和爱老王人士不要打我。
players = ['charles', 'martina', 'michael', 'florence', 'eli']
# 深复制
fav_players = players[:]
# 浅复制
playerss = players
动手试一试:
# 4-10
numbers = [value for value in range(3, 31) if value % 3 == 0]
print("The first three items in the list are:" + numbers[:2])
print("Three items from the middle of the list are:" + numbers[1:3])
print("The last three items in the list are:" + numbers[-3:])
# 4-11
pizzas = ['红烧肉', '宫保鸡丁', '北京烤鸭']
friend_pizzas = pizzas[:]
pizzas.append('鱼香肉丝')
friend_pizzas.append('烤猪蹄')
print("My favorite pizzas are:")
for pizza in pizzas:
print("\t" + pizza)
print("My friend's favorite pizzas are:")
for pizza in friend_pizzas:
print("\t" + pizza)
# 4-12
my_foods = ['pizza', 'falafel', 'carrot cake']
friend_foods = my_foods[:]
print("My favorite foods are:")
for food in pizzas:
print("\t" + food)
print("My friend's favorite foods are:")
for food in friend_foods:
print("\t" + food)
五、元组
简单的说元组是特别的列表,它不能修改其中的元素,但他能修改整个元组,上代码:
# 创建元组
dimensions = (100, 200)
print(dimensions)
string_dimensions;
for dimension in dimensions:
string_dimensions = dimension + "\t"
print(string_dimensions)
# 修改元组
dimensions = (200, 300)
print(dimensions)
动手试一试:
# 4-13
foods = ['红烧肉', '宫保鸡丁', '北京烤鸭', '鱼香肉丝', '烤猪蹄']
for food in foods:
print(food)
foods[1] = '烤羊肉串'
foods = ['红烧肉', '烤羊肉串', '北京烤鸭', '鱼香肉丝', '糖醋排骨']
for food in foods:
print(food)
这一章就到这里了,下面的格式看一看就行,毕竟也不一定一直用IDEL