【Python基础】S01E02 列表

S01E02列表

  • 列表是什么
  • 列表的操作
    • 修改、添加和删除元素
    • 列表排序
    • 列表倒序
    • 列表长度
    • 遍历整个列表
  • 数值列表
    • 创建数值列表
    • 数值列表简单统计计算
    • 列表推导式
  • 列表切片
  • 复制列表

列表是什么

在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日
徐鸿铎
北京海淀西三旗

你可能感兴趣的:(#,Python,知识储备,python,开发语言,json)