侧边栏壁纸
博主头像
LittleAO的学习小站 博主等级

在知识的沙漠寻找绿洲

  • 累计撰写 125 篇文章
  • 累计创建 27 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

Python的List类型

LittleAO
2023-04-03 / 0 评论 / 0 点赞 / 10 阅读 / 0 字
温馨提示:
本文最后更新于2023-11-13,若内容或图片失效,请留言反馈。 部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

资料来源于Github项目**30-Days-Of-Python,本文为第五章翻译。**

List类型详解

Python有四种组合数据类型:

  • 列表(List):有序且可更改(可变)的集合,允许重复的成员。
  • 元组(Tuple):有序且不可更改(不可变)的集合,允许重复的成员。
  • 集合(Set):无序、无索引且不可更改(不可变),但我们可以向集合中添加新项。不允许重复成员。
  • 字典(Dictionary):无序、可更改(可变)且索引的集合。没有重复的成员。

列表(List)是一种包含不同数据类型的集合,它是有序和可修改(可变)的。列表可以为空,也可以包含不同数据类型的项。

如何创建List

在Python有两种创建List的方式:

  • 使用内置函数
# 语法
lst = list()

empty_list = list() # 这是一个没有任何内容的空列表
print(len(empty_list)) # 0

  • 使用方括号[]
# 语法
lst = []

empty_list = [] # 这是一个没有任何内容的空列表
print(len(empty_list)) # 0

对于带值的List,我们可以通过len()来得到列表的长度。

fruits = ['banana', 'orange', 'mango', 'lemon']                     # list of fruits
vegetables = ['Tomato', 'Potato', 'Cabbage','Onion', 'Carrot']      # list of vegetables
animal_products = ['milk', 'meat', 'butter', 'yoghurt']             # list of animal products
web_techs = ['HTML', 'CSS', 'JS', 'React','Redux', 'Node', 'MongDB'] # list of web technologies
countries = ['Finland', 'Estonia', 'Denmark', 'Sweden', 'Norway']

# 打印List和它们的长度
print('Fruits:', fruits)
print('Number of fruits:', len(fruits))
print('Vegetables:', vegetables)
print('Number of vegetables:', len(vegetables))
print('Animal products:',animal_products)
print('Number of animal products:', len(animal_products))
print('Web technologies:', web_techs)
print('Number of web technologies:', len(web_techs))
print('Countries:', countries)
print('Number of countries:', len(countries))

输出:
Fruits: ['banana', 'orange', 'mango', 'lemon']
Number of fruits: 4
Vegetables: ['Tomato', 'Potato', 'Cabbage', 'Onion', 'Carrot']
Number of vegetables: 5
Animal products: ['milk', 'meat', 'butter', 'yoghurt']
Number of animal products: 4
Web technologies: ['HTML', 'CSS', 'JS', 'React', 'Redux', 'Node', 'MongDB']
Number of web technologies: 7
Countries: ['Finland', 'Estonia', 'Denmark', 'Sweden', 'Norway']
Number of countries: 5

List的值可以是不同类型。

lst = ['Asabeneh', 250, True, {'country':'Finland', 'city':'Helsinki'}] # list containing different data types

使用正整数正向访问List的值

我们可以通过编号来访问一个List的内容,编号从0开始。

fruits = ['banana', 'orange', 'mango', 'lemon']
first_fruit = fruits[0] # 用编号来访问第一个值
print(first_fruit)      # banana
second_fruit = fruits[1]
print(second_fruit)     # orange
last_fruit = fruits[3]
print(last_fruit) # lemon
# 最后一个编号
last_index = len(fruits) - 1
last_fruit = fruits[last_index]

使用负整数反向访问List的值

负数编号代表着从后往前,-1代表着最后一个值,-2代表着倒数第二个值。

fruits = ['banana', 'orange', 'mango', 'lemon']
first_fruit = fruits[-4]
last_fruit = fruits[-1]
second_last = fruits[-2]
print(first_fruit)      # banana
print(last_fruit)       # lemon
print(second_last)      # mango

解开List

lst = ['item','item2','item3', 'item4', 'item5']
first_item, second_item, third_item, *rest = lst
print(first_item)     # item1
print(second_item)    # item2
print(third_item)     # item3
print(rest)           # ['item4', 'item5']

# 示例一
fruits = ['banana', 'orange', 'mango', 'lemon','lime','apple']
first_fruit, second_fruit, third_fruit, *rest = lst
print(first_fruit)     # banana
print(second_fruit)    # orange
print(third_fruit)     # mango
print(rest)           # ['lemon','lime','apple']
# 解开List的示例二
first, second, third,*rest, tenth = [1,2,3,4,5,6,7,8,9,10]
print(first)          # 1
print(second)         # 2
print(third)          # 3
print(rest)           # [4,5,6,7,8,9]
print(tenth)          # 10
# 解开List的示例三
countries = ['Germany', 'France','Belgium','Sweden','Denmark','Finland','Norway','Iceland','Estonia']
gr, fr, bg, sw, *scandic, es = countries
print(gr)
print(fr)
print(bg)
print(sw)
print(scandic)
print(es)

List列表切片

  • 正向索引:我们可以通过指定起始点、结束点和步长来指定一系列正向索引,返回值将是一个新列表。(默认情况下,起始点为0,结束点为lst的长度减1(最后一个项),步长为1)
fruits = ['banana', 'orange', 'mango', 'lemon']
all_fruits = fruits[0:4] # 返回所有的fruits
# 结果与上条命令相同
all_fruits = fruits[0:] # 不设结束点会选取剩余所有内容
orange_and_mango = fruits[1:3] # 不包括第一个索引
orange_mango_lemon = fruits[1:]
orange_and_lemon = fruits[::2] # 步长为2

  • 反向索引:我们可以通过指定起始点、结束点和步长来指定一系列反向索引,返回值将是一个新列表。
fruits = ['banana', 'orange', 'mango', 'lemon']
all_fruits = fruits[-4:] # 返回所有fruits
orange_and_mango = fruits[-3:-1] # 不包含最后一个索引,['orange', 'mango',]
orange_mango_lemon = fruits[-3:] # 从-3到结束,['orange', 'mango', 'lemon']
reverse_fruits = fruits[::-1] # 负的步长会反转List,['lemon', 'mango', 'orange', 'banana']

修改List

列表是一个可变有序项的集合。让我们修改fruits列表。

fruits = ['banana', 'orange', 'mango', 'lemon']
fruits[0] = 'avocado'
print(fruits)       #  ['avocado', 'orange', 'mango', 'lemon']
fruits[1] = 'apple'
print(fruits)       #  ['avocado', 'apple', 'mango', 'lemon']
last_index = len(fruits) - 1
fruits[last_index] = 'lime'
print(fruits)        #  ['avocado', 'apple', 'mango', 'lime']

检查List的某一项

可以使用"in"运算符检查一个项是否是列表的成员。请参见下面的示例。

fruits = ['banana', 'orange', 'mango', 'lemon']
does_exist = 'banana' in fruits
print(does_exist)  # True
does_exist = 'lime' in fruits
print(does_exist)  # False

向列表中添加项

要将项添加到现有列表的末尾,我们使用方法append()

# 语法
lst = list()
lst.append(item)

fruits = ['banana', 'orange', 'mango', 'lemon']
fruits.append('apple')
print(fruits)           # ['banana', 'orange', 'mango', 'lemon', 'apple']
fruits.append('lime')   # ['banana', 'orange', 'mango', 'lemon', 'apple', 'lime']
print(fruits)

List插入某一项

我们可以使用insert()方法在列表的指定索引处插入单个项。请注意,其他项将向右移动。insert()方法接受两个参数:索引和要插入的项。

# 语法
lst = ['item1', 'item2']
lst.insert(index, item)

fruits = ['banana', 'orange', 'mango', 'lemon']
fruits.insert(2, 'apple') # 在 orange 和 mango 之间插入 apple
print(fruits)           # ['banana', 'orange', 'apple', 'mango', 'lemon']
fruits.insert(3, 'lime')   # ['banana', 'orange', 'apple', 'lime', 'mango', 'lemon']
print(fruits)

List中删除某一项

remove()方法从列表中删除指定的项。

# 语法
lst = ['item1', 'item2']
lst.remove(item)

fruits = ['banana', 'orange', 'mango', 'lemon', 'banana']
fruits.remove('banana')
print(fruits)  # ['orange', 'mango', 'lemon', 'banana'] - this method removes the first occurrence of the item in the list
fruits.remove('lemon')
print(fruits)  # ['orange', 'mango', 'banana']

使用pop()除项

pop()方法根据指定的索引删除对应的项(如果未指定索引,则默认删除最后一项):

# 语法
lst = ['item1', 'item2']
lst.pop()       # 最后一项
lst.pop(index)

fruits = ['banana', 'orange', 'mango', 'lemon']
fruits.pop()
print(fruits)       # ['banana', 'orange', 'mango']

fruits.pop(0)
print(fruits)       # ['orange', 'mango']

使用del删除项

del关键字可以删除指定的索引,也可以用于删除索引范围内的项。它还可以完全删除列表。

# 语法
lst = ['item1', 'item2']
del lst[index] # 仅删除一项
del lst        # 完全删除整个List

fruits = ['banana', 'orange', 'mango', 'lemon', 'kiwi', 'lime']
del fruits[0]
print(fruits)       # ['orange', 'mango', 'lemon', 'kiwi', 'lime']
del fruits[1]
print(fruits)       # ['orange', 'lemon', 'kiwi', 'lime']
del fruits[1:3]     # 这将删除给定索引之间的项,因此不会删除索引为3的项!!
print(fruits)       # ['orange', 'lime']
del fruits
print(fruits)       # T这应该会报错:NameError: name 'fruits' is not defined。

清空List

clear()方法清空列表:

# 语法
lst = ['item1', 'item2']
lst.clear()

fruits = ['banana', 'orange', 'mango', 'lemon']
fruits.clear()
print(fruits)       # []

复制List

可以通过将列表重新分配给一个新变量来复制列表,如下所示:list2 = list1。但是,list2list1的引用,我们在list2中进行的任何更改也会修改原始列表list1。但有很多情况我们不想修改原始列表,而是希望得到一个不同的副本。避免上述问题的一种方法是使用copy()

# 语法
lst = ['item1', 'item2']
lst_copy = lst.copy()

fruits = ['banana', 'orange', 'mango', 'lemon']
fruits_copy = fruits.copy()
print(fruits_copy)       # ['banana', 'orange', 'mango', 'lemon']

连接List

在Python中,有几种方法可以连接或串联两个或多个列表。

加号运算符(+

# 语法
list3 = list1 + list2

positive_numbers = [1, 2, 3, 4, 5]
zero = [0]
negative_numbers = [-5,-4,-3,-2,-1]
integers = negative_numbers + zero + positive_numbers
print(integers) # [-5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5]
fruits = ['banana', 'orange', 'mango', 'lemon']
vegetables = ['Tomato', 'Potato', 'Cabbage', 'Onion', 'Carrot']
fruits_and_vegetables = fruits + vegetables
print(fruits_and_vegetables ) # ['banana', 'orange', 'mango', 'lemon', 'Tomato', 'Potato', 'Cabbage', 'Onion', 'Carrot']

  • 使用extend()方法连接

    extend()方法允许将一个列表附加到另一个列表中。请参见下面的示例。

# 语法
list1 = ['item1', 'item2']
list2 = ['item3', 'item4', 'item5']
list1.extend(list2)

num1 = [0, 1, 2, 3]
num2= [4, 5, 6]
num1.extend(num2)
print('Numbers:', num1) # Numbers: [0, 1, 2, 3, 4, 5, 6]
negative_numbers = [-5,-4,-3,-2,-1]
positive_numbers = [1, 2, 3,4,5]
zero = [0]

negative_numbers.extend(zero)
negative_numbers.extend(positive_numbers)
print('Integers:', negative_numbers) # Integers: [-5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5]
fruits = ['banana', 'orange', 'mango', 'lemon']
vegetables = ['Tomato', 'Potato', 'Cabbage', 'Onion', 'Carrot']
fruits.extend(vegetables)
print('Fruits and vegetables:', fruits ) # Fruits and vegetables: ['banana', 'orange', 'mango', 'lemon', 'Tomato', 'Potato', 'Cabbage', 'Onion', 'Carrot']

List计数

count()方法返回一个项在列表中出现的次数:

# 语法
lst = ['item1', 'item2']
lst.count(item)

fruits = ['banana', 'orange', 'mango', 'lemon']
print(fruits.count('orange'))   # 1
ages = [22, 19, 24, 25, 26, 24, 25, 24]
print(ages.count(24))           # 3

查找某一项的索引

index()方法返回列表中一个项的索引:

# 语法
lst = ['item1', 'item2']
lst.index(item)

fruits = ['banana', 'orange', 'mango', 'lemon']
print(fruits.index('orange'))   # 1
ages = [22, 19, 24, 25, 26, 24, 25, 24]
print(ages.index(24))           # 2, the first occurrence

反转List

reverse()方法可以反转列表的顺序。

# 语法
lst = ['item1', 'item2']
lst.reverse()

fruits = ['banana', 'orange', 'mango', 'lemon']
fruits.reverse()
print(fruits) # ['lemon', 'mango', 'orange', 'banana']
ages = [22, 19, 24, 25, 26, 24, 25, 24]
ages.reverse()
print(ages) # [24, 25, 24, 26, 25, 24, 19, 22]

List排序

我们可以使用sort()方法或sorted()内置函数来对列表进行排序。sort()方法将按升序重新排列列表项并修改原始列表。如果sort()方法的参数reversetrue,它将按降序排列列表。

sort():这个方法会修改原始列表

# 语法
lst = ['item1', 'item2']
lst.sort()                # 升序
lst.sort(reverse=True)    # 降序

示例:

fruits = ['banana', 'orange', 'mango', 'lemon']
fruits.sort()
print(fruits)             # 将会按字典序排序, ['banana', 'lemon', 'mango', 'orange']
fruits.sort(reverse=True)
print(fruits) # ['orange', 'mango', 'lemon', 'banana']
ages = [22, 19, 24, 25, 26, 24, 25, 24]
ages.sort()
print(ages) #  [19, 22, 24, 24, 24, 25, 25, 26]

ages.sort(reverse=True)
print(ages) #  [26, 25, 25, 24, 24, 24, 22, 19]

sorted():返回排序后的列表,不修改原始列表。

示例:

fruits = ['banana', 'orange', 'mango', 'lemon']
print(sorted(fruits))   # ['banana', 'lemon', 'mango', 'orange']
# Reverse order
fruits = ['banana', 'orange', 'mango', 'lemon']
fruits = sorted(fruits,reverse=True)
print(fruits)     # ['orange', 'mango', 'lemon', 'banana']

0

评论区