ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

第四章 操作列表(for循环)

2021-07-05 13:32:30  阅读:207  来源: 互联网

标签:num range 列表 foods 循环 print hero 第四章 pizza


第四章 操作列表

4.1遍历整个列表

使用for循环打印

将列表heros的元素与he(随便取一个变量)相关联,打印赋给变量he的内容

heros = ['zhangsan','yaso','mangzai']
for he in heros:
    print(he)
zhangsan
yaso
mangzai

4.1.1 深入循环研究

for he in heros:

这行代码让python获取列表heros中的第一个值‘zhangsan’,并将其与变量’he’相关联,接下来读取下一行代码

    print(he)

让打印’he’的值,依然是’zhangsan’,该列表还包含其他值,python返回到循环的第一行

for he in heros:
    print(he)  # 然后获取第二个元素关联'he',再打印,以此类推

循环中有多少个元素就执行多少次循环,直到最后一个元素
至于变量也是可以随便定名称,但是用单数和双数区分可以更有可读性:
for cat in cats: for message in messages

4.1.2 在for循环中执行更多操作

附加消息

heros = ['zhangsan','yaso','mangzai']
for hero in heros:
    print(f"{hero.title()},who is a good hero")
for hero in heros:
    print(f"{hero.title()},who is a good hero")
    print(f"I can't wait to see your next performance,{hero.title()}.\n")

4.1.3在for循环结束后执行一些操作

for hero in heros:
    print(f"{hero.title()},who is a good hero")
    print(f"I can't wait to see your next performance,{hero.title()}.\n")
print("Thank you,everyone, that was a good game show!")   # 主要看缩进

看缩进辨别是否在循环里,有缩进的在循环里,没有的是全局的语句

4.2避免缩进错误

python中根据缩进来判断代码行与前一个代码行的关系

4.2.1忘记缩进

对于for循环的组成代码行必须缩进

heros = ['zhangsan','yaso','mangzai']
for hero in heros:
print(hero)   # expected an indented block(应为缩进块)

4.2.2忘记缩进额外的代码行

忘了某一行

for hero in heros:
    print(f"{hero.title()},who is a good hero")
print(f"I can't wait to see your next performance,{hero.title()}.\n")

这是一个逻辑错误,语法合理,但结果不符合预期

4.2.3不必要的缩进

message = 'Hello world'
    print(message)   # unexpected indent(不被期望的缩进)

4.2.4循环后不必要的缩进

for hero in heros:
    print(f"{hero.title()},who is a good hero")
    print(f"I can't wait to see your next performance,{hero.title()}.\n")
    print("Thank you,everyone, that was a good game show!")   

逻辑错误

4.2.5 遗漏了冒号(重要)

for那一行末尾要跟冒号:

for hero in heros     # invalid syntax(无效语法)
    print(f"{hero.title()},who is a good hero")

4.2.6练习

4-1 披萨

pizzas = ['Sausage pizza','Cheese pizza','Corn pizza']
for pizza in pizzas:
    print(pizza)
    print(f"i love {pizza}.\n")
print("I really like pizza!")

4-2 动物

dogs = ['柯基','二哈','拉布拉多','牧羊犬']
for dog in dogs:
    print(f"{dog}喜欢吃骨头")
print("他们都是很好的宠物狗")

4.3创建数值列表

4.3.1 使用函数range()

生成数据

for num in range(1,5):  # 1开始,5截至(不包括5)
    print(num)

range只打印了1-4,由于编程语言中常见的差一行为的结果,函数rangr()指定第一个数开始,第二个数停止


所以要输出1~5得用range(1,6)

for num in range(1,6):
    print(num)
调用`range()`时,也可指定一个参数,这样它将从0开始。
for num in range(5):  # 从0开始五个数
    print(num)

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

可以用list()函数直接将range()的结果转换为列表

number = list(range(5))
print(number)
[0, 1, 2, 3, 4]

range()函数还可以指定步长range(start,stop,step)

num = list(range(5,18,3))  # 从5开始,每次+3,到18结束
print(num)
[5, 8, 11, 14, 17]

用range()可以创建任何需要的数集,活用for,列表操作的函数,增加删除等


如:创建由前十个数平方组成的列表

squares = []   # 创个空列表,到时候用append添加
for value in range(1,11):
    square = value ** 2
    squares.append(square)   # 每次的结果都添加到列表中,用向末尾加的方法
    
print(squares)
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
    squares.append(value ** 2)   #简洁写法

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

函数:min(),sum(),max()

digits = []
for num in range(10):
    digits.append(num)
print(digits)
max(digits)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]





9
min(digits)
0
sum(digits)
45

4.3.4 列表解析

for循环和创建新元素的代码合成一行,并自动附加新元素


格式:list = [要存数据的表达式 for value in range()] 注意这里的for循环没有冒号

squares = [value ** 2 for value in range(1,10)]  # 没有冒号
print(squares)
[1, 4, 9, 16, 25, 36, 49, 64, 81]

4.3.5 练习

4-3 数到20

for num in range(1,21):
    print(num)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

练习4-4:一百万

million = [value for value in range(1,10001)] # 100万太大输不出来
print(million)
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, ......]

4-5 100万求和

million = [value for value in range(1,1000001)]
print(min(million))
print(max(million))
print(sum(million)) # 秒出
1
1000000
500000500000

4-6 奇数

odd_num = list(range(1,20,2))
for o in odd_num:
    print(o)
1
3
5
7
9
11
13
15
17
19

4-7 3的倍数

three = list(range(3,31,3))
for num in three:
    print(num)
3
6
9
12
15
18
21
24
27
30

4-8 立方

cube = [num ** 3 for num in range(1,11)]
for value in cube:
    print(value)
1
8
27
64
125
216
343
512
729
1000

4.4 使用列表的一部分(切片)

4.4.1 切片

要创建切片,可指定要使用的起始元素和终止元素


一般就是[a,b],a是访问起始元素-1,b就是终止元素,如访问3.4个 【2:4】

players = ['A','B','C','D','E']
print(players[0:3]) # 输出第1~3个
['A', 'B', 'C']
# 指定输出第3,4个元素
print(players[2:4]) 
['C', 'D']

不指定起始默认从表头开始

# 不指定起始默认从表头开始
print(players[:4])
['A', 'B', 'C', 'D']
# 要让切片终止于末尾,同样操作
print(players[2:])
['C', 'D', 'E']
# 上章的负索引也是同样,如输出后三个元素
print(players[-3:])
['C', 'D', 'E']
# 还可以指定步长,如访问第2到5个元素,间隔为2
print(players[1:5:2])
['B', 'D']

4.4.2 遍历切片

players = ['A','B','C','D','E']
print("Here are the first three players on my team")

for memb in players[:3]:
    print(memb)
Here are the first three players on my team
A
B
C

4.4.3 复制列表

创建一个包含整个列表的切片[:]通过不加起始和终止索引

my_foods = ['noodles','cake','pizza','bread']
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:
['noodles', 'cake', 'pizza', 'bread']

My friend's favorite foods are:
['noodles', 'cake', 'pizza', 'bread']
# 核实是否是两个列表,分别添加东西
my_foods.append('water')
friend_foods.append("cola")

print(my_foods)
print(friend_foods)
['noodles', 'cake', 'pizza', 'bread', 'water']
['noodles', 'cake', 'pizza', 'bread', 'cola']

复制必须切片,不切片直接=,会导致两个代表同一个列表,对两个表的操作其实是在操作用一个表

my_foods = ['noodles','cake','pizza','bread']
my_foods = friend_foods
my_foods.append('water')
friend_foods.append("cola")

print(my_foods)
print(friend_foods)
['noodles', 'cake', 'pizza', 'bread', 'cola', 'water', 'cola']
['noodles', 'cake', 'pizza', 'bread', 'cola', 'water', 'cola']

4.4.4 练习

4-10切片

players = ['noodles', 'cake', 'pizza', 'bread', 'cola', 'water', 'cola']

print("The first three items in the list are:")
print(players[:3])

print("\nThree items from the middle of the list are:")
print(players[2:5])

print("\nThe last three items in the list are:")
print(players[-3:])
The first three items in the list are:
['noodles', 'cake', 'pizza']

Three items from the middle of the list are:
['pizza', 'bread', 'cola']

The last three items in the list are:
['cola', 'water', 'cola']

4-11 你的皮萨,我的披萨

my_pizzas = ['Sausage pizza','Cheese pizza','Corn pizza']
friend_pizzas = my_pizzas[:]

my_pizzas.append("beef pizza")
friend_pizzas.append("cola pizza")

print("my favorite pizzas are:")
for pizza in my_pizzas:
    print(f"- {pizza}")

print("\nMy friend's favorite pizzas are:")
for pizza in friend_pizzas:
    print(f"- {pizza}")
my favorite pizzas are:
- Sausage pizza
- Cheese pizza
- Corn pizza
- beef pizza

My friend's favorite pizzas are:
- Sausage pizza
- Cheese pizza
- Corn pizza
- cola pizza

4.5 元组

⭐列表非常适合用于存储在程序运行期间可能变化的数据集。列表是可修改的

⭐元组则是不可变的列表。Python将不能修改的值称为不可变的

4.5.1 定义元组

元组看起来像列表,但用()圆括号而不是[]方括号,其他的索引,遍历和列表一样

dimensions = (200,50) # 两个元素的元组
print(dimensions[0])
print(dimensions[1])
200
50
# 尝试修改
dimensions = (200,50)
dimensions[0] = 255 #'tuple'(元组) object does not support item assignment不支持赋值
---------------------------------------------------------------------------

TypeError                                 Traceback (most recent call last)

<ipython-input-30-99dbc19ec1e2> in <module>
      1 # 尝试修改
      2 dimensions = (200,50)
----> 3 dimensions[0] = 255 #'tuple'(元组) object does not support item assignment不支持赋值


TypeError: 'tuple' object does not support item assignment

注意:严格的说,元组是由逗号标识的,()只是为了美观。如果只要定义一个元素的元组,必须在这个元素后面加上逗号
my_t = (3,)

# 试验
neirong = (1,2)
hao = (3,)
women = 4,5,7  # 不加括号也没有问题

print(neirong)
print(hao)
print(women[1])
print(women)
(1, 2)
(3,)
5
(4, 5, 7)

4.5.2遍历元组中的所有值

num = (4,7,8,9)
for v in num:
    print(v)
4
7
8
9

4.5.3修改元组中的变量

虽然不能改变元组的元素,但能给这些元素重新赋值来改变

num = (4,7,8,9)
print("original num:")
for v in num:
    print(v)
    
num = (2,5,3,3)
print("modified num:")
for v in num:
    print(v)
original num:
4
7
8
9
modified num:
2
5
3
3

4.5.4 练习

4-13 自助餐

foods = ('noodles', 'cake', 'pizza', 'bread', 'cola')
for con in foods:
    print(con)
noodles
cake
pizza
bread
cola
foods[1] = 'xuebi'
---------------------------------------------------------------------------

TypeError                                 Traceback (most recent call last)

<ipython-input-35-378c38c533e1> in <module>
----> 1 foods[1] = 'xuebi'


TypeError: 'tuple' object does not support item assignment
foods = ('noodles', 'zhou', 'milk', 'bread', 'cola')
for new in foods:
    print(new)

4.6 设置代码格式

⭐缩进:每级缩进都用四个空格,一般文字文档用制表符,要防止制表符和空格混乱

⭐每行最好不要超过80字符

⭐空行在不同操作间用,空行不会影响运行,一般只用一行,不用多行

标签:num,range,列表,foods,循环,print,hero,第四章,pizza
来源: https://blog.csdn.net/xuezhale/article/details/118487761

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有