【精品分享】《Python编程从入门到实践》学习笔记——第四章 操作列表

本系列记录的是自己学习笔记,以及一些总结,并非照搬书本,道友可进行查漏补缺,与君共勉。

本系列文章传送门
第2章 变量和简单数据类型
第3章 列表简介
第4章 操作列表
第5章 if语句
第6章 字典          未完待续
第7章 while循环 未完待续
第8章 函数         未完待续
第9章 类            未完待续
第10章 文件和异常 未完待续
项目实战



4.1 遍历整个列表

我们经常需要遍历列表的所有元素,对每个元素执行相同的操作。可以使用for循环。
格式:
for item in list_of_items:
操作语句

dogs = ['藏獒', '哈士奇','秋田犬','柴犬']
for dog in dogs:
    print('这是一条' + dog.title())
      
# 输出结果
这是一条藏獒
这是一条哈士奇
这是一条秋田犬
这是一条柴犬

4.2 创建数值列表

4.2.1 使用range()函数创建数字列表

range()函数可创建一个整数列表,一般用在 for 循环中。

语法

range(start, stop, step)

参数说明:

start: 计数从 start 开始。默认是从 0 开始。例如range(5)等价于range(0, 5);

stop: 计数到 stop 结束,但不包括 stop。例如:range(0, 5) 是[0, 1, 2, 3, 4]没有5;

step:步长,默认为1。例如:range(0, 5) 等价于 range(0, 5, 1);

左闭右开!!!

# 例1
for value in range(5):
    print(value)

# 输出结果
0
1
2
3
4

使用函数list()将range()的结果直接转换成列表

# 例1
numbers = list(range(1,6))
print(numbers)

# 输出结果
[1, 2, 3, 4, 5]

# 例2
numbers = list(range(2,10,2))
numbers

#输出结果
[2, 4, 6, 8]

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

min()最小值函数,max()最大值函数,sum()求和函数。

numbers = list(0,10)
minNum = min(numbers)
maxNum = max(numbers)
sumNum = sum(numbers)
print(minNum,maxNum,sumNum)

# 输出结果
0 9 45

4.2.3 列表解析/列表生成式

语法

法1: [expression for iter_val in iterable]

法2: [expression for iter_val in iterable if cond_expr]

例1. 要求:列出1~10所有数字的平方

# 1、普通方法:
squares = []
for value in range(1,11):
    squares.append(value**2)
print(squares)
# 输出结果
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

####################################################

# 2、列表解析:
squares = [value**2 for value in range(1,11)]
print(squares)
# 输出结果
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

例2. 要求:列出1~10中小于等于2,大于等于4的数字的平方

# 1、普通方法:
squares = []
for value in range(1,11):
    if value <= 2 or value >= 4 :
        squares.append(value**2)
print(squares)
# 输出结果
[1, 4, 16, 25, 36, 49, 64, 81, 100]

####################################################

# 2、列表解析
squares = [value ** 2 for value in range(1,11) if value <= 2 or value >= 4]
print(squares)
# 输出结果
[1, 4, 16, 25, 36, 49, 64, 81, 100]

例3. 要求:实现两个列表中的元素逐一配对

# 1、普通方法:
L1 = ['x','y','z']
L2 = [1,2,3]      
L3 = []
for a in L1:
    for b in L2:
        L3.append((a,b))
print(L3)
# 输出结果
[('x', 1), ('x', 2), ('x', 3), ('y', 1), ('y', 2), ('y', 3), ('z', 1), ('z', 2), ('z', 3)]

####################################################

# 2、列表解析:
L1 = ['x','y','z']
L2 = [1,2,3]  
L3 = [(a, b) for a in L1 for b in L2]
print(L3)
# 输出结果
[('x', 1), ('x', 2), ('x', 3), ('y', 1), ('y', 2), ('y', 3), ('z', 1), ('z', 2), ('z', 3)]

4.3 切片

可用于访问列表的部分元素。

注:取的是列表索引,左闭右开,支持负数索引。返回值仍然是列表

推荐参考大佬博客https://www.jianshu.com/p/15715d6f4dad ,博客介绍很清晰,这里不再赘述。

切片操作基本表达式:object[start_index:end_index:step]

切片小结

(一)start_index、end_index、step三者可同为正、同为负,或正负混合。但必须遵循一个原则,即:当start_index表示的实际位置在end_index的左边时,从左往右取值,此时step必须是正数(同样表示从左往右);当start_index表示的实际位置在end_index的右边时,表示从右往左取值,此时step必须是负数(同样表示从右往左),即两者的取值顺序必须相同。

(二)当start_index或end_index省略时,取值的起始索引和终止索引由step的正负来决定,这种情况不会有取值方向矛盾(即不会返回空列表[]),但正和负取到的结果顺序是相反的,因为一个向左一个向右。

(三)step的正负是必须要考虑的,尤其是当step省略时。比如a[-1:],很容易就误认为是从“终点”开始一直取到“起点”,即a[-1:]= [9, 8, 7, 6, 5, 4, 3, 2, 1, 0],但实际上a[-1:]=[9](注意不是9),原因在于step省略时step=1表示从左往右取值,而起始索引start_index=-1本身就是对象的最右边元素了,再往右已经没数据了,因此结果只含有9一个元素。

4.4 元组(tuple)

Python的元组与列表类似,不同之处在于元组的元素不能修改。

元组使用小括号,列表使用方括号。

元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可。

# 示例
tup1 = ('physics', 'chemistry', 1997, 2000)
tup2 = (1, 2, 3, 4, 5 )

元组中只包含一个元素时,需要在元素后面添加逗号

tup1 = (50,)

4.4.1 访问元组

使用索引访问其元素

dimensions = (200, 50)
print(dimensions[0])
print(dimensions[1])

# 输出结果
200
50

4.4.2 修改元组

元组的元素不能修改!!!

# 错误示例
dimensions = (200, 50)
dimensions[0] = 250
报错
TypeError: 'tuple' object does not support item assignment

可对元组进行连接组合

tup1 = (12, 34.56)
tup2 = ('abc', 'xyz')
tup3 = tup1 + tup2
print(tup3)

# 输出结果
(12, 34.56, 'abc', 'xyz')

可对元组进行重新赋值

dimensions = (200, 50)
print("Original dimensions:")
for dimension in dimensions:
    print(dimension)

#  重新赋值
dimensions = (400, 100)
print("\nModified dimensions:")
for dimension in dimensions:
    print(dimension)

# 输出结果
Original dimensions:
200
50

Modified dimensions:
400
100

4.4.3 删除元组——del语句

元组中的元素不能删除,但可使用del语句删除真个元组。

tup = (12, 34.56)
del tup

如文章对您有帮助,感谢您的点赞+关注(^ _ ^)

福利:添加关注、评论区留言免费赠送自己学习资料

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值