Python学习-Chapter4 操作列表

2023-02-27 13:56:09 浏览数 (1)

Chapter4 操作列表

4.1 for循环的使用

4.1.1 这是一个利用循环打印的例子:

代码语言:javascript复制
a = ['a','b','c','d']
for an in a:   #冒号必不可少
    print(an)
代码语言:javascript复制
a
b
c
d

4.1.2 利用for循环进行更多操作的例子:

代码语言:javascript复制
a = ['a','b','c','d']
for an in a:   #冒号必不可少
    print(f"{an.title()} is uppercase of {an}")
    print("next char is:n")
代码语言:javascript复制
A is uppercase of a
next char is:

B is uppercase of b
next char is:

C is uppercase of c
next char is:

D is uppercase of d
next char is:

结果说明: 缩进的都属于for循环 an相当于计数器变量作索引的a[i]。

4.1.2 在for循环结束后执行操作

代码语言:javascript复制
a = ['a','b','c','d']
for an in a:   #冒号必不可少
    print(f"{an.title()} is uppercase of {an}")
print("test end.")  #当缩进没有的时候,默认为在for循环之外。
代码语言:javascript复制
A is uppercase of a
B is uppercase of b
C is uppercase of c
D is uppercase of d
test end.

4.2 避免缩进错误

4.2.1 忘记缩进

代码语言:javascript复制
a = ['a','b','c','d']
for an in a:
print(an)
代码语言:javascript复制
  File "/var/folders/1j/k13fttf13b5d6j8_m4q12rgr0000gn/T/ipykernel_49995/1502029580.py", line 3
    print(an)
    ^
IndentationError: expected an indented block

当没有缩进时,for循环找不到循环体,会报错。

原则:需要进循环体的加缩进,不需要的不加缩进,没有for循环不缩进,for循环不忘冒号

4.3 创建数值列表

4.3.1 range()和list()

range()的三个用法:

range(x) 和 range(0,x)一样 range(x,y) range(x,y,z)

代码语言:javascript复制
list(range(6)) #相当于默认从0开始数6个
代码语言:javascript复制
[0, 1, 2, 3, 4, 5]
代码语言:javascript复制
list(range(0,6)) #指定从0开始数6个
代码语言:javascript复制
[0, 1, 2, 3, 4, 5]
代码语言:javascript复制
list(range(3,12)) #相当于从3到12,步长为1,注意右括号12实际数到11
代码语言:javascript复制
[3, 4, 5, 6, 7, 8, 9, 10, 11]
代码语言:javascript复制
list(range(3,12,2))#步长为2
代码语言:javascript复制
[3, 5, 7, 9, 11]

4.3.2 用range()创建数字列表

打印1-10的偶数
代码语言:javascript复制
even_num = list(range(2,11,2))  #注意,左边从2开始,右边界限为11(左面取得到,右面够不到)
print(even_num)
代码语言:javascript复制
[2, 4, 6, 8, 10]
创建一个列表,包含1-10的平方
代码语言:javascript复制
square_list = [] #先创建一个空列表

for value in range(1,11):
    
    square = value ** 2 #每一次线计算一下平方的值,再append到list里面
    square_list.append(square)
    #上面两行可以写成: spuare_list.append(value ** 2)
    
print(square_list)
代码语言:javascript复制
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

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

找数字列表(元素为数字) 的 最大值、最小值、总和
代码语言:javascript复制
digits = [1,2,3,4,5,6,7,8,9,0]

print(max(digits))

print(min(digits))

print(sum(digits))
代码语言:javascript复制
9
0
45

4.3.4 列表解析

代码语言:javascript复制
#上面输入平方数的例子还可以用两行代码解决:
square_list = [value ** 2 for value in range (1,11)]
#本质是把一个列表转换成另一个列表
#格式:列表1 = [表达式 for 变量 in 列表2]
print(square_list)
代码语言:javascript复制
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

4.4 使用列表的一部分

使用切片

代码语言:javascript复制
digits = [1,2,3,4,5,6,7,8,9,0]

print(digits[0:3])
代码语言:javascript复制
[1, 2, 3]
切片使用方法: 列表[起点:终点]

如果写成 列表[:终点],起点默认索引为0; 如果写成 列表[起点:],则默认重点到列表最后一个

如何打印最后三个元素?
代码语言:javascript复制
digits = [1,2,3,4,5,6,7,8,9,0]

print(digits[-3:])
代码语言:javascript复制
[8, 9, 0]

列表[-倒数几个:]

每间隔两个元素就提取一个(在选取范围内)
代码语言:javascript复制
digits = [1,2,3,4,5,6,7,8,9,0]

print(digits[0:10:2])
代码语言:javascript复制
[1, 3, 5, 7, 9]

[起点:重点:步长],步长不输入(没有第二个冒号)默认为1.

遍历切片:使用for循环 切片

代码语言:javascript复制
digits = [1,2,3,4,5,6,7,8,9,0]
print("No 5 to No 9 number in my digits are:n")
for digit in digits[4:8]:        #利用单复数区别 列表 和 an
    print(digit)#注意这里打印的是变量
代码语言:javascript复制
No 5 to No 9 number in my digits are:

5
6
7
8

复制列表 (使用切片)

代码语言:javascript复制
digits = [1,2,3,4,5,6,7,8,9,0]
copy_digits = digits[:]

digits.append(10)
copy_digits.append(11)
print(digits)
print(copy_digits)
代码语言:javascript复制
[1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 10]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 11]
注意语法: 列表1 = 列表2[:]

这样才是两个列表

如果没有切片直接复制

则两个列表指向同一个储存空间,本质上是一个列表

代码语言:javascript复制
digits = [1,2,3,4,5,6,7,8,9,0]
copy_digits = digits

digits.append(10)
copy_digits.append(11)
print(digits)
print(copy_digits)
代码语言:javascript复制
[1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 10, 11]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 10, 11]

4.5 元组-不可改变的列表

定义语法:

元组名 = (元素1,元素2,…)

访问和列表相同

代码语言:javascript复制
a = (30,40)
print(a[0])
print(a[1])
代码语言:javascript复制
30
40

不能改变:指不能单独给其内元素赋值。(报错)

代码语言:javascript复制
a = (30,40)
a[0] = 1
代码语言:javascript复制
---------------------------------------------------------------------------

TypeError                                 Traceback (most recent call last)

/var/folders/1j/k13fttf13b5d6j8_m4q12rgr0000gn/T/ipykernel_53119/1136073212.py in <module>
      1 a = (30,40)
----> 2 a[0] = 1


TypeError: 'tuple' object does not support item assignment

遍历元组-和for循环

代码语言:javascript复制
a = (30,40,50)

for an in a:
    print(an)
代码语言:javascript复制
30
40
50

修改元组变量-重新定义

代码语言:javascript复制
a = (30,40)
print(a)

a = (40,50)
print(a)
代码语言:javascript复制
(30, 40)
(40, 50)

0 人点赞