python编程 从入门到实践2--列表list及其操作

本文深入探讨Python中列表和元组的使用方法,包括基本操作、元素修改、排序及统计,同时讲解如何通过列表解析简化代码。此外,还介绍了元组的概念及应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

列表 list

列表基础

[]表示列表,其中元素可以没有任何关系

bicycles = ["aa","bb","cc"]
print(bicycles[0])

注:索引从0开始而不是1

访问最后一个元素,索引-1

print(bicycles[-1].title)
Cc

同样的索引-2返回倒数第二个列表元素,以此类推。

元素操作

修改:bicycles[0] = “abc”
添加:
列表末尾:bicycles.append(“forever”)
指定位置:bicycles.insert(0,‘suzuki’) 在索引为0处添加空间,将后面的元素后移一个位置。
删除元素:
1、del语句(按位置删除,且删除后不再需要该值)

bicycles = ["aa","bb","cc"]
print(bicycles)
del bicycles[0]
print(bicycles)

这里删除的是索引为0的位置的元素

['aa', 'bb', 'cc']
['bb', 'cc']

2、pop删除 从列表中删除,仍然需要改值
默认弹出最后一位

bicycles = ["aa","bb","cc"]
print(bicycles)
popped_bicycles = bicycles.pop()
print(bicycles)
print(popped_bicycles)
['aa', 'bb', 'cc']
['aa', 'bb']
cc

也可指定弹出索引位置

bicycles = ["aa","bb","cc"]
print(bicycles)
popped_bicycles = bicycles.pop(0)
print(bicycles)
print(popped_bicycles)
['aa', 'bb', 'cc']
['bb', 'cc']
aa

3、remove删除 根据值删除

bicycles = ["aa","bb","cc"]
print(bicycles)
bicycles.remove("aa")
print(bicycles)
['aa', 'bb', 'cc']
['bb', 'cc']

注:方法remove()只能删除第一个指定的值

组织列表

1、sort 永久排序

cars = ["bmw","audi","toyota","hongqi"]
print(cars)
cars.sort()
print(cars)
['bmw', 'audi', 'toyota', 'hongqi']
['audi', 'bmw', 'hongqi', 'toyota']

如果要排列反序,cars.sort(reverse = True),得到

['toyota', 'hongqi', 'bmw', 'audi']

2、sorted()对列表进行临时排序

cars = ["bmw","audi","toyota","hongqi"]
print(cars)
print(sorted(cars))
print(cars)
['bmw', 'audi', 'toyota', 'hongqi']
['audi', 'bmw', 'hongqi', 'toyota']
['bmw', 'audi', 'toyota', 'hongqi']

如果要排列反序,sorted(cars,reverse = True)

3、倒着打印列表
cars.reverse()
4、确定列表长度
len(cars)

操作列表

遍历列表

for car in cars:
    print(car)
bmw
audi
toyota
hongqi

依序从cars中提取字符串并存入变量car中。for后记得加冒号:
注意命名约定:

for item in list_of_items:
for dog in dogs

Python根据缩进来判断代码行与前一个代码行的关系(C中的{})

创建数字列表

1、函数range()

for value in range(1,5):
    print(value)
1
2
3
4

注:只打印1-4,函数range()从指定的第一个值开始数,并在到达你指定的第二个值后停止,**因此输出不包含第二个值。**如果要打0-4,可以range(5),或者range(0,5)

2、创建数字列表
用list()将range()结果直接转换为列表。

numbers=list(range(1,5))#
print(numbers)
[1, 2, 3, 4]

range()函数还可以指定步长,如range(1,11,2),即从1开始步长为2直到等于或者超过11(等于或者超过就不显示了)

[1, 3, 5, 7, 9]

栗子:

squares = []
for value in range(1,7,2):
    squares.append(value ** 2)#平方
print(squares)
[1, 9, 25]

3、简单统计
min() max() sum()

4、列表解析

squares = [value **2 for value in range(1,7,2)]
#for value in range(1,7,2):
    #squares.append(value ** 2)
print(squares)

列表解析将for循环和创建新元素的代码合并成一行。注意,这里的for语句的结尾没有冒号:

[1, 9, 25]

使用列表的一部分

1、切片

players = ["aa","bb","cc","dd","ee"]
print(players[0:3])#打印0 1 2位置的值
print(players[:2])#打印0 1位置的值
print(players[2:])#打印2 3 4位置的值
print(players[-2:])#打印倒数2个位置的值
['aa', 'bb', 'cc']
['aa', 'bb']
['cc', 'dd', 'ee']
['dd', 'ee']

2、遍历切片

for player in players[:3]:
	print(player.title())
Aa
Bb
Cc

3、复制列表

players = ["aa","bb","cc","dd","ee"]
super_players = players[:]
ugly_players = players

super_players.append("superman")
ugly_players.append("uglyman")
print(players)
print(super_players)
print(ugly_players)
['aa', 'bb', 'cc', 'dd', 'ee', 'uglyman']
['aa', 'bb', 'cc', 'dd', 'ee', 'superman']
['aa', 'bb', 'cc', 'dd', 'ee', 'uglyman']

从上述结果可以看出,如果没有使用切片赋值[:],ugly_players其实是和players绑定在一起的,两个变量共同变化。!!
如果使用切片赋值[:],super_players与players就无关了,成为互相不相关的变量。

元组

概念区分:
列表适用于存储程序运行期间可能变化的数据集。
元组适用于存储程序运行期间不可变(不可修改)的数据。

1、定义元组
使用圆括号来标识

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

虽然标识用(),但是表示索引时依然用[]

200
30

在这里插入图片描述
在这里插入图片描述
可在调试界面看到,dimensions类别是tuple(n. [计] 元组,重数),而之前列表players类别是list

如果修改元组值

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

得到错误:

Traceback (most recent call last):
  File "D:/code/python code/PythonCrashCourse/ex3/extest.py", line 24, in <module>
    dimensions[0] =2
TypeError: 'tuple' object does not support item assignment

可知并不能修改元组的值
2、修改元组变量
如果必须修改元组不可呢?可以直接更新元组变量。

dimensions = (200,30,50)
print(dimensions)
dimensions =(2,3,5)
print(dimensions)
(200, 30, 50)
(2, 3, 5)

木有问题,不会报错了!

设置代码格式

PEP 8是最古老的python改进提案之一,其中包括了代码格式设置指南。
缩进:每级缩进4个空格,且最好不要混用制表符和空格
行长:每行不超过80字符,注释行长不超过72字符
不要再程序中过多的使用空行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值