Python基础 – 列表

列表定义

bicycles = ['trek', 'cannondale', 'redline', 'specialized']
print(bicycles)

列表访问

print(bicycles[0])
print(bicycles[2])

在不确定列表的长度时,访问最后一个元素

print(bicycles[-1])

同理,这种约定也适用于其他负数索引,例如,索引 -2 返回倒数第二个列表元素,索引 -3 返回倒数第三个元素

添加元素

在列表末尾添加元素

motorcycles = ['honda', 'yamaha', 'suzuki']
motorcycles.append('ducati')

在列表中插入元素

使用方法insert()可以在列表的任何位置添加新元素。为此,你需要制定新元素的索引和值

motorcycles.insert(0, 'ducati')

如果需要将元素添加到末尾,可以使用下标-1

motorcycles = ['honda', 'yamaha', 'suzuki']
motorcycles.insert(-1, 'ducati')
print(motorcycles)
# ['honda', 'yamaha', 'ducati', 'suzuki']

删除元素

使用del语句删除元素

如果知道要删除的元素在列表中的位置,可以使用del语句。

del motorcycles[1]

使用方法pop()删除元素

有时候,你要将元素从列表中删除,并接着使用它的值。

popped_motorcycle = motorcycles.pop()
print(popped_motorcycle)

默认情况下,pop()会取出列表中的最后一个

如果想要取出指定位置的元素

popped_motorcycle = motorcycles.pop(2)

别忘了,每当你使用pop()时,被弹出的元素就不再在列表中了。

如果你不确定该使用del语句还是pop()方法,下面是一个简单的判断标准:如果你要从列表中删除一个元素,且不再以任何方式使用它,就使用del语句;如果你要在删除元素后还能继续使用它,就使用方法pop()。

根据值删除元素

有时候,你不知道要从列表中删除的值所处的位置。如果只知道要删除的元素的值,可使用方法remove()。

motorcycles = ['honda', 'yamaha', 'suzuki']
remove_motorcycle = motorcycles.remove('yamaha')
print(motorcycles)
# ['honda', 'suzuki']

同样,使用remove()从列表中删除元素时,也可以接着使用它的值。

注意 方法remove()只删除第一个指定的值。如果要删除的值可能在列表中出现多次,就需要使用循环来确保将每个值都删除

组织列表

使用方法sort()对列表永久排序

cars: list[str] = ['bmw', 'audi', 'toyota', 'subaru']
cars.sort()
print(cars)
# ['audi', 'bmw', 'subaru', 'toyota']

还可以按照字母顺序降序排列列表元素,只需要向sort()方法传递参数reverse = True即可。

cars.sort(reverse=True)
print(cars)
# ['toyota', 'subaru', 'bmw', 'audi']

使用函数sorted()对列表临时排序

要保留列表元素原来的排列顺序,同时以特定的顺序呈现它们,可使用函数sorted()。函数sorted()让你能够按特定顺序显示列表元素,同时不影响它们在列表中的原始排列顺序。

cars: list[str] = ['bmw', 'audi', 'toyota', 'subaru']
print(sorted(cars))
print(cars)
# ['audi', 'bmw', 'subaru', 'toyota']
# ['bmw', 'audi', 'toyota', 'subaru']

可以看到,原来列表的顺序并没有发生变化。如果要按与字母顺序相反的顺序显示列表,也可以向函数sorted()传递参数reverse = True

sorted(cars, reverse=True)

注意 注意 在并非所有的值都是小写时,按字母顺序排列列表要复杂些。决定排列顺序时,有多种解读大写字母的方式,要指定准确的排列顺序,可能比我们这里所做的要复杂。

倒着打印列表

cars.reverse()
print(cars)
# ['subaru', 'toyota', 'audi', 'bmw']

方法reverse()永久性地修改列表元素的排列顺序,但可随时恢复到原来的排列顺序,只需对列表再次调用reverse()即可。

确定列表的长度

使用函数len()可快速获悉列表的长度。

print(len(cars))
# 4

使用列表时避免索引错误

注意 发生索引错误却找不到解决办法时,请尝试将列表或其长度打印出来。列表可能与你以为的截然不同,在程序对其进行了动态处理时尤其如此。通过查看列表或其包含的元素数,可帮助你找出这种逻辑错误。