在Python中,用方括号([ ])表示列表,用逗号分隔其中的元素。
bicycles = ['trek','cannon','redline','specialized']
print(bicycles)
>>> ['trek', 'cannon', 'redline', 'specialized']
bicycles = ['trek','cannon','redline','specialized']
for i in bicycles:
print(i)
>>> trek
cannon
redline
specialized
知识自查
:第一个列表元素的索引是 0,而不是 1 ;
bicycles = ['trek','cannon','redline','specialized']
print(bicycles[0]) # 打印列表中第一个元素
print(bicycles[-1]) # 打印列表中最后一个元素
>>> trek
>>> specialized
提高
:与 format 结合;
bicycles = ['trek','cannon','redline','specialized']
message = f"My first bicycle was a {bicycles[1].title()}"
print(message)
>>> My first bicycle was a Cannon
修改元素:
修改列表元素指定列表名称以及修改的元素的索引值,再附上修改该索引位置的新值;
motorcycles = ['honda', 'yamaha', 'suzuki']
motorcycles[0] = 'ducati' # 0 称为索引值(即位置)
print(motorcycles)
>>> ['ducati', 'yamaha', 'suzuki']
添加元素:
添加元素最简单的方式是将元素追加(append)到列表的末尾;
motorcycles = ['honda', 'yamaha', 'suzuki']
motorcycles.append('ducati')
print(motorcycles)
>>> ['honda', 'yamaha', 'suzuki', 'ducati']
当然,也可以使用 insert() 方法在列表的任意位置添加新元素,为此,我们需要指定新元素添加位置的索引以及添加的值;
motorcycles = ['honda', 'yamaha', 'suzuki']
motorcycles.insert(1, 'ducati')
print(motorcycles)
>>> ['honda', 'ducati', 'yamaha', 'suzuki']
insert() 中索引的概念是要插入到的位置,insert(1, 'ducati')
即要在列表中将 “ducati” 插入为第二个元素;
删除元素:
如果知道要删除的元素在列表中的位置,可以直接使用 del 函数删除:
motorcycles = ['honda', 'yamaha', 'suzuki']
del motorcycles[1]
print(motorcycles)
>>> ['honda', 'suzuki']
如果要删除末尾元素,可使用 pop() 函数,且 pop() 函数会返回删除的元素值;
motorcycles = ['honda', 'yamaha', 'suzuki']
popped_motorcycles = motorcycles.pop()
print(motorcycles)
print(popped_motorcycles)
>>> ['honda', 'yamaha']
>>> suzuki
但是实际上,pop(index) 函数中 index 可以指定索引位置,也可以删除指定索引的元素;
motorcycles = ['honda', 'yamaha', 'suzuki']
popped_motorcycles = motorcycles.pop(1)
print(motorcycles)
print(popped_motorcycles)
>>> ['honda', 'suzuki']
>>> yamaha
如果不知道要删除的值在列表中的位置,使用 remove() 函数方法;
motorcycles = ['honda', 'yamaha', 'suzuki']
motorcycles.remove('yamaha')
print(motorcycles)
>>> ['honda', 'suzuki']
知识自查
:remove() 函数方法只会删除第一个符合指定的值,如果要删除列表中所有符合标准的值,则需要使用循环。
sort() 排序
Python 提供 sort() 方法可以轻松的对列表进行排序;
cars = ['bmw', 'audi', 'toyota', 'volvo']
cars.sort()
print(cars)
>>> ['audi', 'bmw', 'toyota', 'volvo']
默认按照字母顺序对列表进行排序,当然也可以选择按照字母相反的顺序;
cars = ['bmw', 'audi', 'toyota', 'volvo']
cars.sort(reverse=True)
print(cars)
>>> ['volvo', 'toyota', 'bmw', 'audi']
当然,我最爱 Volvo ~
sorted() 临时排序
sort() 方法会彻底改变排序,但是如果我们想要保留原来的排序顺序,而呈现出按字母大小排序,可使用 sorted() 函数;
cars = ['bmw', 'audi', 'toyota', 'volvo']
print(sorted(cars))
print(cars)
>>> ['audi', 'bmw', 'toyota', 'volvo']
>>> ['bmw', 'audi', 'toyota', 'volvo']
如果无需排序,只要反向列表初始的顺序,reverse() 函数可以满足于你;
cars = ['bmw', 'audi', 'toyota', 'volvo']
cars.reverse()
print(cars)
>>> ['volvo', 'toyota', 'audi', 'bmw']
使用 len() 函数可快速获悉列表的长度;
cars = ['bmw', 'audi', 'toyota', 'volvo', 'benz', 'RR']
print(len(cars))
>>> 6
使用循环遍历一个列表的所有内容;
magicians = ['alice','david','carolina']
for magician in magicians:
print(f'{magician.title()}, that was a good trick!')
>>> Alice, that was a good trick!
David, that was a good trick!
Carolina, that was a good trick!
建议
: 在使用列表遍历时,建议对单个列表元素起有意义的名称,比如 cat 对应 cats 列表等。如此单数复数的命名约定有助于理解 for 循环对每个元素执行的操作。
range(a,b)
Python中的函数 range() 可以轻松的生成一系列的数;
for value in range(1,5):
print(value)
>>> 1
2
3
4
range(1,5)
代表 [1,5);
range(a,b,length)
range() 函数还可以指定步长,即第三个参数 length;
for value in range(1,5,2):
print(value)
>>> 1
3
(1,5,2) 中 2 代表“步长”,而所谓“步长”,即每一步的长度,故 value 包含两个值:1;1+2=3;
创建数值列表
要创建数值列表,可使用 list() 函数与 range() 函数的组合,list() 函数直接将 range() 的结果转换为列表;
numbers = list(range(1,5))
print(numbers)
>>> [1, 2, 3, 4]
所谓简单统计计算,即最大值(max)、最小值(min)、求和(sum);
digits = [1,2,3,4,5,6,7,8,9,0]
print(max(digits))
>>> 9
print(min(digits))
>>> 0
print(sum(digits))
>>> 45
e . g . e.g. e.g. 简单介绍
squares = [value**2 for value in range(1,11)]
print(squares)
>>> [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
列表推导式将 for 循环和创建新元素的代码合并成一行,并自动追加新元素;但是虽然列表推导式可以将三四行代码写到一行,其缺陷也是相当明显的,即会增大代码理解难度。
返回列表的第 2~4 个元素;
players = ['charles', 'martina', 'michael', 'florence', 'eli']
print(players[1:4])
>>> ['martina', 'michael', 'florence']
返回列表的前 4 个元素、最后两个元素;
players = ['charles', 'martina', 'michael', 'florence', 'eli']
print(players[:4])
print(players[-2:])
>>> ['charles', 'martina', 'michael', 'florence']
>>> ['florence', 'eli']
返回列表第 1、3、5 名;
players = ['charles', 'martina', 'michael', 'florence', 'eli']
print(players[::2])
>>> ['charles', 'michael', 'eli']
复制列表踩坑,复制方式不同结果不同;
my_foods = ['pizza', 'falafel', 'carrot cake']
friend_foods_1 = my_foods[:] # 复制方式1
friend_foods_2 = my_foods # 复制方式2
my_foods.append('cannoli')
friend_foods_1.append('ice cream')
friend_foods_2.append('noodles')
print(my_foods)
print(friend_foods_1)
print(friend_foods_2)
>>> ['pizza', 'falafel', 'carrot cake', 'cannoli', 'noodles']
['pizza', 'falafel', 'carrot cake', 'ice cream']
['pizza', 'falafel', 'carrot cake', 'cannoli', 'noodles']
观察;
# 复制方法1 是将值复制给一个名称为 friend_foods_1、有自己内存空间地址的变量中;
friend_foods_1 = my_foods[:]
# 复制方法2 变量 friend_foods_2 内存空间地址指向 my_foods,没有自己的空间地址;
friend_foods_2 = my_foods
2023年9月20日
徐鸿铎
北京海淀西三旗