在Python中,用方括号([ ])表示列表,用逗号分隔其中的元素。
bicycles = ['trek','cannon','redline','specialized']print(bicycles)>>> ['trek', 'cannon', 'redline', 'specialized'] bicycles = ['trek','cannon','redline','specialized']for i in bicycles:print(i)>>> trekcannonredlinespecialized知识自查:第一个列表元素的索引是 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)>>> 1234range(1,5) 代表 [1,5);
range(a,b,length)
range() 函数还可以指定步长,即第三个参数 length;
for value in range(1,5,2):print(value)>>> 13(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))>>> 9print(min(digits))>>> 0print(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[:]# 复制方式1friend_foods_2 = my_foods# 复制方式2my_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_foods2023年9月20日 徐鸿铎 北京海淀西三旗