一、列表简介
列表是由一系列按特定顺序排列的元素组成。在Python中,用方括号[ ]来表示列表,并用逗号来分割其中的元素。
1、访问列表元素
列表是有序集合,因此要访问列表的任何元素,只需将该元素的位置或索引告诉Python。索引从0开始。同时Python提供了一种特殊语法,可以用负数作为索引。代表从列表的后面来访问列表中的元素:索引-1返回最后一个列表元素,索引-2返回倒数第二个列表元素…以此类推。这在我们不知道列表长度的时候很有用。
fruits = ['apple','banana','pear']
print(fruits[0].title())
print(fruits[-1].title())
print(fruits)
Apple
Pear
['apple', 'banana', 'pear']
2、修改、添加、删除列表元素
修改列表元素
fruits[0] = 'watermelon'
['watermelon', 'banana', 'pear']
添加列表元素
- 在列表末尾添加元素:append()
fruits.append('watermelon')
['apple', 'banana', 'pear', 'watermelon']
- 在列表中间插入元素:insert(),该操作在对应索引的位置上添加元素,将原来该位置及其之后的元素都右移一个位置。
fruits.insert(-1,'mango')
['apple', 'banana', 'mango', 'pear']
删除列表元素
- 使用del语句删除元素
del fruits[0]
['banana', 'pear']
- 使用pop()方法删除元素:如果不加索引则删除列表末尾元素。
first_element = fruits.pop(0)
print(first_element)
print(fruits)
apple
['banana', 'pear']
如果从列表中删除一个元素且不再以任何方式使用它,就是用del语句;如果在删除元素后还想继续使用它,就用pop()方法。
- 根据值删除元素:有时候你不知道要从列表中删除的值所处的位置,这种情况可以使用remove()方法。注意remove()方法只删除第一个指定的值,如果要删除的值在列表中出现多次,就需要使用循环来进行判断。
fruits.remove('banana')
['apple', 'pear']
3、组织列表
使用方法sort()对列表进行永久性排序
字符串会根据字母顺序排序,同时可以向sort()方法传递参数reverse=True来降序排序列表。
fruits = ['banana','pear','apple']
fruits.sort()
print(fruits)
nums = [3,1,5,7,2]
nums.sort()
print(nums)
nums.sort(reverse=True)
print(nums)
['apple', 'banana', 'pear']
[1, 2, 3, 5, 7]
[7, 5, 3, 2, 1]
使用函数sorted()对列表进行临时排序
要保留列表元素原来的排列顺序,同时以特定的顺序呈现它们,可以使用函数sorted()。同样可以向sorted()函数传递参数reverse=True来降序排序列表。
fruits = ['banana','pear','apple']
print(sorted(fruits,reverse=True))
print(fruits)
['pear', 'banana', 'apple']
['banana', 'pear', 'apple']
反转列表元素的排列顺序
要反转列表元素的排列顺序,可以使用方法reverse()。
fruits = ['apple','banana','pear']
fruits.reverse()
print(fruits)
['pear', 'banana', 'apple']
确定列表的长度
使用函数len()可以快速获得列表的长度。
fruits = ['banana','pear','apple']
print(len(fruits))
3
二、操作列表
1、遍历列表
fruits = ['banana','pear','apple']
for fruit in fruits:
print(fruit)
banana
pear
apple
- 要注意for语句后面的冒号以及for循环内部的缩进。
2、创建数值列表
使用range()函数
for i in range(1,5):
print(i)
1
2
3
4
- range()函数内的参数“左闭右开”。
使用range()创建数字列表
要创建数字列表,可使用函数list()将range()的结果直接转换为列表。如果将range()作为list()的参数,输出将为一个数字列表。
numbers = list(range(1,5))
print(numbers)
[1, 2, 3, 4]
使用range()函数时还可以指定步长。例如下面的代码打印1~10内的偶数。
even_numbers = list(range(2,11,2))
print(even_numbers)
[2, 4, 6, 8, 10]
使用range()几乎能够创建任何需要的数字集,例如创建一个列表其中包含前十个整数的平方。结合了前面列表的添加操作。
squares = []
for i in range(1,11):
i = i ** 2
squares.append(i)
print(squares)
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
对数字列表执行简单的统计计算
有几个专门用于处理数字列表的Python函数。例如找出数字列表的最大值、最小值和总和:
nums = [1,2,3,4,5]
print(min(nums))
print(max(nums))
print(sum(nums))
1
5
15
列表解析
前面介绍的生成列表squares的方式包含几行代码,而列表解析让你只需编写一行代码就能生成这样的列表。列表解析将for循环和创建新元素的代码合并成一行,并自动附加新元素。
- 变量名 = [ 表达式 for循环]。表达式用于生成要存储在列表中的值,for循环为表达式提供值。
nums = [num ** 2 for num in range(1,11)]
print(nums)
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
3、使用列表的一部分——切片
除了处理列表的所有元素外,我们还可以处理列表的部分元素–Python称之为切片。
要创建切片,可指定要是用的第一个元素和最后一个元素的索引。同range()一样,取值也是“左闭右开”的。
players = ['Kobe','Paul','James','Curry','Jordan']
print(players[0:3])
print(players[-3:-1])
['Kobe', 'Paul', 'James']
['James', 'Curry']
如果没有指定起始索引,则默认从列表头遍历。如果没有指定终止索引,则默认遍历到列表末尾。
players = ['Kobe','Paul','James','Curry','Jordan']
print(players[:3])
print(players[3:])
print(players[:])
['Kobe', 'Paul', 'James']
['Curry', 'Jordan']
['Kobe', 'Paul', 'James', 'Curry', 'Jordan']
遍历切片
players = ['Kobe','Paul','James','Curry','Jordan']
for player in players[:3]:
print(player)
Kobe
Paul
James
复制列表
要复制列表,可创建一个包含整个列表的切片。而不能直接将列表变量赋给另一个变量。
players = ['Kobe','Paul','James','Curry','Jordan']
another_players_one = players[:]
another_players_two = players
del players[0]
print(another_players_one)
print(another_players_two)
['Kobe', 'Paul', 'James', 'Curry', 'Jordan']
['Paul', 'James', 'Curry', 'Jordan']
- players[:]创建了players的一个复制。而把players直接赋值到另一个变量可以理解为Java里面的引用,两个变量指向同一个列表。
三、元组
列表是可以修改的,但有时我们需要创建一系列不可修改的元素,元祖可以满足这种需求。Python将不能修改的值称为不可变得,而不可变的列表被称为元祖。
1、定义元组
元祖使用圆括号而不是方括号来进行标识。定义元祖后,就可以使用索引来访问其元素,就像访问列表元素一样。
dimensions = (200,5)
for dimension in dimensions:
print(dimension)
200
5
此时我们不能再通过dimensions[0] = 300
来修改元祖内的元素。
2、修改元组变量
虽然不能修改元组的元素,但可以给存储元组的变量赋值。
dimensions = (200,5)
print(dimensions)
dimensions = (300,5)
print(dimensions)
(200, 5)
(300, 5)