Python学习:列表

1. 列表由一系列按特定顺序排列的元素组成。

在Python中,用方括号( [])来表示列表,并用逗号来分隔其中的元素。

bicycles = ['trek', 'cannondale', 'redline', 'specialized']

2. 访问列表元素 (下标)

列表是有序集合,因此要访问列表的任何元素,只需将该元素的位置或索引告诉Python即可。
要访问列表元素,可指出列表的名称,再指出元素的索引,并将其放在方括号内。

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

Python为访问最后一个列表元素提供了一种特殊语法。通过将索引指定为-1,可让Python返
回最后一个列表元素:

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

3. 修改、添加和删除元素

修改列表元素

修改列表元素的语法与访问列表元素的语法类似。要修改列表元素,可指定列表名和要修改的元素的索引,再指定该元素的新值。

motorcycles = ['honda', 'yamaha', 'suzuki']
print(motorcycles)
motorcycles[0] = 'ducati'
print(motorcycles)

在列表末尾添加元素(append)

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

方法append()将元素’ducati’添加到了列表末尾,而不影响列表中的其他所有元素

在列表中插入元素(insert)

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

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

从列表中删除元素

使用del语句删除元素(下标法)

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

motorcycles = ['honda', 'yamaha', 'suzuki']
print(motorcycles)
del motorcycles[0]
print(motorcycles)
#['yamaha', 'suzuki']

使用方法pop()删除元素(下标法)

方法pop()可删除列表末尾的元素,并让你能够接着使用它。术语弹出( pop)源自这样的类
比:列表就像一个栈,而删除列表末尾的元素相当于弹出栈顶元素。

motorcycles = ['honda', 'yamaha', 'suzuki']
print(motorcycles)
popped_motorcycle = motorcycles.pop()
print(motorcycles)
print(popped_motorcycle)
输出:
['honda', 'yamaha', 'suzuki']
['honda', 'yamaha']
suzuki

弹出列表中任何位置处的元素

实际上,你可以使用pop()来删除列表中任何位置的元素,只需在括号中指定要删除的元素
的索引即可。

motorcycles = ['honda', 'yamaha', 'suzuki']
first_owned = motorcycles.pop(0)

根据值删除元素(remove)

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

motorcycles = ['honda', 'yamaha', 'suzuki', 'ducati']
print(motorcycles)
motorcycles.remove('ducati')
print(motorcycles)
输出:
['honda', 'yamaha', 'suzuki', 'ducati']
['honda', 'yamaha', 'suzuki']

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

motorcycles = ['honda', 'yamaha', 'suzuki', 'ducati']
print(motorcycles)
too_expensive = 'ducati'
motorcycles.remove(too_expensive)
print(motorcycles)
print("\nA " + too_expensive.title() + " is too expensive for me.")
输出:
['honda', 'yamaha', 'suzuki', 'ducati']
['honda', 'yamaha', 'suzuki']

A Ducati is too expensive for me.

注意:方法remove()只删除第一个指定的值。如果要删除的值可能在列表中出现多次,就需要使用循环来判断是否删除了所有这样的值。

用 index()方法在列表中查找值

列表值有一个 index()方法, 可以传入一个值, 如果该值存在于列表中, 就返回它的下标。如果该值不在列表中, Python 就报 ValueError。

>>> spam = ['hello', 'hi', 'howdy', 'heyas']
>>> spam.index('hello')
0
>>> spam.index('heyas')
3

组织列表

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

Python方法sort()让你能够较为轻松地对列表进行排序。

cars = ['bmw', 'audi', 'toyota', 'subaru']
cars.sort() #默认按字母的升序排序
print(cars)

你还可以按与字母顺序相反的顺序排列列表元素,为此,只需向sort()方法传递参数reverse=True。

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

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

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

cars = ['bmw', 'audi', 'toyota', 'subaru']
print("Here is the original list:")
print(cars)
print("\nHere is the sorted list:")
print(sorted(cars))
print("\nHere is the original list again:")
print(cars)
输出:
Here is the original list:
['bmw', 'audi', 'toyota', 'subaru']
Here is the sorted list:
['audi', 'bmw', 'subaru', 'toyota']
Here is the original list again:
['bmw', 'audi', 'toyota', 'subaru']

注意,调用函数sorted()后,列表元素的排列顺序并没有变。如果你要按与字母顺序相反的顺序显示列表,也可向函数sorted()传递参数reverse=True。

倒着打印列表

要反转列表元素的排列顺序,可使用方法reverse()。

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

注意, reverse()不是指按与字母顺序相反的顺序排列列表元素,而只是反转列表元素的排列顺序:

确定列表的长度

使用函数len()可快速获悉列表的长度。在下面的示例中,列表包含4个元素,因此其长度为4:

cars = ['bmw', 'audi', 'toyota', 'subaru']
print(len(cars))

注意: Python计算列表元素数时从1开始,因此确定列表长度时,你应该不会遇到差一错误。

列表也可以包含其他列表值。

这些列表的列表中的值, 可以通过多重下标来访问, 像这样:

>>> spam = [['cat', 'bat'], [10, 20, 30, 40, 50]]
>>> spam[0]
['cat', 'bat']
>>> spam[0][1]
'bat'
>>> spam[1][4]
50

第一个下标表明使用哪个列表值,第二个下标表明该列表值中的值。例如,spam[0][1]打印出’bat’,即第一个列表中的第二个值。如果只使用一个下标,程序将打印出该下标处的完整列表值。

负数下标

虽然下标从 0 开始并向上增长,但也可以用负整数作为下标。整数值−1 指的是列表中的最后一个下标, −2 指的是列表中倒数第二个下标, 以此类推。在交互式环境中输入以下代码:

>>> spam = ['cat', 'bat', 'rat', 'elephant']
>>> spam[-1]
'elephant'
>>> spam[-3]
'bat'
>>> 'The ' + spam[-1] + ' is afraid of the ' + spam[-3] + '.'
'The elephant is afraid of the bat.

利用切片取得子列表

像下标可以从列表中取得单个值一样,“切片” 可以从列表中取得多个值,结果是一个新列表。切片输入在一对方括号中, 像下标一样, 但它有两个冒号分隔的整数。
请注意下标和切片的不同。

  • spam[2]是一个列表和下标(一个整数)。
  • spam[1:4]是一个列表和切片(两个整数)。
    在一个切片中,第一个整数是切片开始处的下标。第二个整数是切片结束处的下标。切片向上增长,直至第二个下标的值,但不包括它。切片求值为一个新的列表值。在交互式环境中输入以下代码:
>>> spam = ['cat', 'bat', 'rat', 'elephant']
>>> spam[0:4]
['cat', 'bat', 'rat', 'elephant']
>>> spam[1:3]
['bat', 'rat']
>>> spam[0:-1]
['cat', 'bat', 'rat']

作为快捷方法, 你可以省略切片中冒号两边的一个下标或两个下标。省略第一个下标相当于使用 0, 或列表的开始。省略第二个下标相当于使用列表的长度, 意味着分片直至列表的末尾。在交互式环境中输入以下代码:

>>> spam = ['cat', 'bat', 'rat', 'elephant']
>>> spam[:2]
['cat', 'bat']
>>> spam[1:]
['bat', 'rat', 'elephant']
>>> spam[:]
['cat', 'bat', 'rat', 'elephant']
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值