Python--操作列表

1.for循环

1.1 for循环的基本语法

python 复制代码
for variable in iterable:  
    # 执行循环体  
    # 这里可以是任何有效的Python代码块

这里的variable是一个变量名,用于在每次循环迭代时临时存储iterable中的下一个元素。

iterable是一个可迭代对象,比如列表(list)、集合(set)、范围(range)、元组(tuple)、字符串(string)、字典(dictionary)。

在每次循环迭代中,iterable中的下一个元素会被赋值给variable,然后执行循环体内的代码块,代码块可以有任何条语句,只要它们的缩进相同。当iterable中的所有元素都被遍历后,循环就会结束。

1.2 for循环在列表中的应用

python 复制代码
my_list = [1, 2, 3, 4, 5]  # 创建一个列表  
  
# 使用for循环遍历列表  
for number in my_list:  
    print(number)  # 打印列表中的每个数字

在这个示例中,number是循环变量,my_list是可迭代对象。在每次循环迭代中,number被赋值为my_list中的下一个元素,然后执行print(number)语句。当my_list中的所有元素都被遍历后,循环结束。

1.3.遍历范围(使用 range() 函数)

python 复制代码
for i in range(5):  # 默认从0开始,到5(不包括5)  
    print(i)

range() 是 Python 中的一个内置函数,用于生成一个整数序列,通常用于 for 循环中。range() 函数的语法如下:

python 复制代码
range(start, stop[, step])
参数解释:
start:序列的起始值(包含),默认为 0。
stop:序列的结束值(不包含),即生成的序列中最大值为 stop - 1。
step:序列中的元素之间的步长,即每个相邻元素的差值,默认为 1。

2.遍历整个列表

下面使用一个循环输出所有学生的姓名:

python 复制代码
students = ['刘备', '曹操', '孙权']
for s in students:  #输出学生的姓名
    print(s,end=' ')

上面print利用end=' '把每次输出的换行改为空格.

2.1 print详细使用

print()函数的基本语法如下:

python 复制代码
print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)

参数解释: 
*objects:要打印的一个或多个对象,它们之间用逗号分隔。 
          这些对象可以是字符串、数字、变量、表达式等。 
sep:用于在对象之间插入的字符串,默认为一个空格。 
end:在最后一个对象之后附加的字符串,默认为换行符\n。 
file:指定输出流,默认为sys.stdout,即标准输出(通常是控制台)。 
flush:是否立即刷新输出流,默认为False。在交互式模式下,flush参数通常被忽略; 
    但在某些I/O库中,例如在写入文件或网络连接时,它可能会很有用。 
  1. 打印字符串
python 复制代码
print("欢迎!")
  1. 打印变量
python 复制代码
name = "sss"  
age = 30  
print("我的名字叫", name, "我今年", age, "岁了。")
  1. 格式化输出(使用sep和end参数)
python 复制代码
print("中国", "西安", "sss", sep=', ', end='!!!\n')

3.避免缩进错误

Python 根据缩进来判断代码行与程序其他部分的关系。

下面来看⼀些较为常见的缩进错误。

3.1 忘记缩进

位于 for 语句后面且属于循环组成部分的代码,⼀定要缩进。 如果忘记缩进,python会提醒你

python 复制代码
students = ['刘备', '曹操', '孙权']
for s in students:  #输出学生的姓名
print(s)  #没有缩进,会出现错误提示

通常,将紧跟在 for 语句后面的代码行缩进,可消除这种缩进错误。

3.2 忘记缩进其它代码

如果位于for语句后面有多条语句,那么它们的缩进应该一直.例如下面的代码.需要的操作如下:

python 复制代码
students = ['刘备', '曹操', '孙权']
for s in students:  #输出学生的姓名
    print(f'{s}','你的学习非常好')
    print('期待下节课见面!')

如果缩进不对,输出的结果如下:

python 复制代码
students = ['刘备', '曹操', '孙权']
for s in students:  #输出学生的姓名
    print(f'{s}','你的学习非常好')
print('期待下节课见面!')  #这一句没有缩进,不属于for循环

3.3 不必要的缩进

python 复制代码
message = 'sss'
    print(message)

调用 print() 无须缩进,因此 Python将指出这种错误:

3.4 漏写冒号

for 语句末尾的冒号告诉 Python,下⼀行是循环的第⼀行。

python 复制代码
students = ['刘备', '曹操', '孙权']
for s in students  #输出学生的姓名
    print(s)

4.创建数值列表

列表非常适合用于存储数值集合。

4.1 使用range()函数

函数 range() 让你能够轻松地生成⼀系列的数。

要创建数值列表,可使用 list() 函数将 range() 的结果直接转换为列表。如果将 range() 作为 list() 的参数,输出将是⼀个数值列表。

python 复制代码
numbers = list(range(1, 6))
print(numbers)

例如,下面的代码打印 1〜10 的偶数:

python 复制代码
even_numbers = list(range(2, 11, 2)) 
print(even_numbers) 

例如,下面的代码,创建一个列表,保存1~10的平方数:

python 复制代码
squares = list(range(1,11)) 
i = 0
for v in squares: 
    v2 = v**2   # **表示指数 
    squares[i] = v2 
    i = i+1 
print(squares) 

下面的代码和上面的作用相同:

python 复制代码
squares = [] #表明squares是列表
for v in range(11): #v从1遍历到10,不包括11
    squares.append(v**2)
print(squares)

4.2数值列表统计计算

你可以轻松地找出数值列表中的最大值、最小值和求和:

python 复制代码
digits = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
a = min(digits)
b = max(digits)
c = sum(digits)
print(digits)
print('最小值:',a,',最大值:',b,',和:',c)

4.3 列表推导式

列表推导式(list comprehension)将 for 循环和创建新元素的代码合并成⼀行,并自动追加新元素。

下面使用列表推导式创建平方数列表:

python 复制代码
squares = [v**2 for v in range(1,11)]
print(squares)

在方括号内,定义⼀个表达式,用于生成要存储到列表中的值。如表达式 value**2,它计算平方值。接下来,编写⼀个 for循环,用于给表达式提供值。

5.使用列表的一部分

你可以处理列表的部分元素,在Python 中称为切片(slice)。

5.1 切片

切片(slice)是一种简洁的方式来访问列表中的一部分元素。切片操作基于索引进行,可以返回一个新的列表,这个新列表包含原列表中指定范围内的元素。

切片的基本语法如下:

python 复制代码
list[start:stop:step]
说明:
    list 是要进行切片的列表。
    start 是切片的起始索引(包含),默认为0。
    stop 是切片的结束索引(不包含),默认为列表的长度。
    step 是切片的步长,即每隔多少个元素取一个值,默认为1。如果步长为负数,则表示从后往前取元素。

下面是一些切片操作的示例:

python 复制代码
# 创建一个列表  
my_list = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]  
  
# 切片操作  
# 取前三个元素(索引0到3,不包括3,等同my_list[0:3])  
print(my_list[:3])  # 输出: [0, 1, 2]  ,由于没有指定起始,默认为0 
  
# 取从索引3到索引7的元素(不包括7)  
print(my_list[3:7])  # 输出: [3, 4, 5, 6]  
  
# 取所有元素(等同于my_list)  
print(my_list[:])  # 输出: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]  
  
# 取每隔一个元素的元素(步长为2)  
print(my_list[::2])  # 输出: [0, 2, 4, 6, 8]  
  
# 从后往前取,取最后三个元素(索引-3到-1)  
print(my_list[-3:])  # 输出: [7, 8, 9]  
  
# 反转列表(从后往前取,步长为-1)  
print(my_list[::-1])  # 输出: [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]

切片操作不会修改原列表,而是返回一个新的列表。

5.2 遍历切片

遍历切片(slice)与遍历列表(list)或其他可迭代对象的方式相同。切片是列表的一个子集,因此你可以使用相同的循环结构来遍历它。以下是如何遍历切片的示例:

python 复制代码
# 创建一个列表  
my_list = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]  
  
# 创建一个切片,例如从索引1到索引5(不包括5)  
slice_of_list = my_list[1:5]  
  
# 使用for循环遍历切片  
for item in slice_of_list:  
    print(item)  
  
# 输出结果将是:  
# 1  
# 2  
# 3  
# 4

在很多情况下,切片是很有用的。例如,在编写游戏时,可以在玩家退出游戏时将其最终得分加⼊⼀个列表,然后将该列表按降序排列,再创建⼀个只包含前三个得分的切片,以获取该玩家的三个最高得分;在处理数据时,可以使用切片来进行批量处理;在编写 Web 应用程序时,可以使用切片来分页显示信息。

5.3 复制列表

要复制列表,可以创建⼀个包含整个列表的切片,方法是同时省略起始索引和终止索引(:)。

python 复制代码
li1 = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
li2 = li1[:]  #切片会创建一个临时的列表
print('li1:',li1)
print('li2:',li2)
li1.append(100) #新增一个元素100
li2.append(200) #新增一个元素200
print('li1,新增100后:',li1)
print('li2,新增200后:',li2)

从上面的输出结果能看出,li1和li2是两个独立的列表。

下面是错误的示例

python 复制代码
li1 = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
li2 = li1 #li2和li1关联到同一个列表
print('li1:',li1)
print('li2:',li2)
li1.append(100) #新增一个元素100
li2.append(200) #新增一个元素200
print('li1,新增100后:',li1)
print('li2,新增200后:',li2)

6.元组

将不能修改的值称为不可变的,而不可变的列表称为元组(tuple)。

元组(Tuple)它用于存储一系列不可变的值。这些值可以是任何数据类型,并且它们之间通过逗号分隔,整体由圆括号包围。

6.1 元组的特性:

不可变:元组中的元素在创建后不能被修改。

索引访问:元组中的元素可以通过索引访问。

可以包含任何数据类型:元组中的元素可以是整数、浮点数、字符串、列表、元组等。

python 复制代码
# 创建一个简单的元组  
t1 = (1, 2, 3, 4, 5)  
print(t1)    # 输出(1, 2, 3, 4, 5)
  
# 访问元组中的元素  
print(t1[0])  # 输出: 1  
  
# 元组中的元素可以是不同类型  
t2 = (1, 'hello', 3.14, [4, 5, 6])  
  
# 元组中的元组  
t3 = (1, (2, 3), 4)  
  
# 遍历元组  
for item in t2:  
    print(item)  
#15,16行,输出结果如下:
# 1
# hello
# 3.14
# [4, 5, 6]

注意:严格地说,元组是由逗号标识的,圆括号只是让元组看起来更整洁、更清晰。如果你要定义只包含⼀个元素的元组,必须在这个元素后⾯加上逗号:

python 复制代码
t1 = (1)
t2 = (1,)
t3 = 1,
print(t1,type(t1)) #type输出括号里的类型
print(t2,type(t2))
print(t3,type(t3))

6.2 遍历元组的元素

像列表⼀样,也可以使用for 循环来遍历元组中的所有值。

python 复制代码
t1 = (1,2,3,4,5) 
for v in t1: 
    print(v,end=' ') #用空格分隔数据 ,输出:1 2 3 4 5 

6.3 修改元组变量的值

元组的值不能修改,它是不可变的值。

python 复制代码
t1 = (1,2,3,4,5)
t1[0] = 100 #试图修改元组第一个元素的值

但可以修改元组变量的值

python 复制代码
t1 = (1,2,3,4,5)
#t1[0] = 100 #错误
t1 = ('中国','趣字节')
print(t1) #输出 ('中国', '趣字节')

上面的代码并没有修改元组的值,只是把新元组关联到变量t1 ,给变量重新赋值是合法的

相关推荐
旋生万物3 分钟前
【终极实战】用Python从零“生成“一个宇宙:螺旋干涉模型的代码实现
开发语言·前端·人工智能·react.js·php·wpf
Niuguangshuo12 分钟前
DeepFilterNet 3:端侧实时全带降噪的开源标杆
python
第一程序员29 分钟前
AI 辅助编程的 7 个误区:把模型当高级搜索引擎是对它的最大浪费
python·rust·github
16月6日-晴1 小时前
Java面向对象进阶—多态
java·开发语言
冯汉栩1 小时前
Swift Control RollingCountdownView(动画倒计时)
开发语言·ios·swift
lisanmengmeng1 小时前
搭建elk环境并接入frostmourne,实现监控报警效果(五)
开发语言·elk·日志·日志监控
Groundwork Explorer2 小时前
W5500 网卡编程初始化与使用指南
python·单片机
oh,huoyuyan2 小时前
JS 动态网页抓不到?试试火车采集器网页抓取工具
开发语言·javascript·ecmascript
风流 少年2 小时前
hutool
java·服务器·开发语言
逸Y 仙X2 小时前
MCP(模型控制协议)完全指南:从核心概念到实战开发
python·大模型·llm·ai编程·mcp