python数据类型之列表

列表定义

列表是由一系列案特定顺序排列的元素组成。在python中,用方括号([])来表示,并用逗号来分隔其中的元素。

names = ['Alex',"Tenglan",'Eric']

 列表访问

  • 列表元素的访问从索引0开始,而不是索引1开始。
  • 列表的索引可以是从负数开始。这种语法经常在需要在不知道列表长度的情况下访问元素。
>> names[0]
'Alex'
>>> names[2]
'Eric'
>>> names[-1]
'Eric'
>>> names[-2] #还可以倒着取
'Tenglan'
View Code

列表操作

修改列表元素

>>> names
['Alex', 'Tenglan', '强行从Eric前面插入', 'Eric', 'Rain', '从eric后面插入试试新姿势', 'Tom', 'Amy', '我是新来的']
>>> names[2] = "该换人了"
>>> names
['Alex', 'Tenglan', '该换人了', 'Eric', 'Rain', '从eric后面插入试试新姿势', 'Tom', 'Amy', '我是新来的']
View Code

添加列表元素

  • 从列表末尾添加,利用append方法。
>>> names
['Alex', 'Tenglan', 'Eric', 'Rain', 'Tom', 'Amy']
>>> names.append("我是新来的")
>>> names
['Alex', 'Tenglan', 'Eric', 'Rain', 'Tom', 'Amy', '我是新来的']
View Code
  • 从列表任意位置添加,利用insert方法。
>>> names
['Alex', 'Tenglan', 'Eric', 'Rain', 'Tom', 'Amy', '我是新来的']
>>> names.insert(2,"强行从Eric前面插入")
>>> names
['Alex', 'Tenglan', '强行从Eric前面插入', 'Eric', 'Rain', 'Tom', 'Amy', '我是新来的']

>>> names.insert(5,"从eric后面插入试试新姿势")
>>> names
['Alex', 'Tenglan', '强行从Eric前面插入', 'Eric', 'Rain', '从eric后面插入试试新姿势', 'Tom', 'Amy', '我是新来的']
View Code

删除列表元素

  • 利用“del”删除,删除的列表元素不能再使用。
>>> del names[2] 
>>> names
['Alex', 'Tenglan', 'Eric', 'Rain', '从eric后面插入试试新姿势', 'Tom', 'Amy', '我是新来的']
>>> del names[4]
>>> names
['Alex', 'Tenglan', 'Eric', 'Rain', 'Tom', 'Amy', '我是新来的']
>>> 
View Code
  • 利用pop方法删除

在pop方法中,默认是从列表末尾删除,但也可以给pop方法传参,参数表示列表的索引;利用pop方法弹出的列表元素可以被再次使用。

 1 >>>name = ['Alex', 'Tenglan', 'Rain', 'Tom', 'Amy', '我是新来的']
 2 >>> names.pop() #删除列表最后一个值 
 3 '我是新来的'
 4 >>> names
 5 ['Alex', 'Tenglan', 'Rain', 'Tom', 'Amy']
 6 
 7 >>> names.pop(2) #删除列表任意一个值 
 8 '我是新来的'
 9 >>> names
10 ['Alex', 'Tenglan', 'Tom', 'Amy']
View Code
  • 利用列表元素值删除

使用remove方法实现。

1 >>>name = ['Alex', 'Tenglan', 'Eric', 'Rain']
2 >>>name.remove('Eric')
3 ['Alex', 'Tenglan','Rain']
View Code
  • 如果要从列表中删除一个元素,而这个元素不会再以任何方式使用,那么就用“del”删除,反之,用pop方法删除。
  • 方法remove只能删除第一个指定的元素。如果要删除的值在列表中存在多个,那么就要用循环去删除。

列表排序

  • 永久性改变列表顺序

利用sort方法实现。给sort方法的参数为“reverse=True”时,可以反向排序;排序的原则是按照字母顺序排序的。

1 ['Alex', 'Amy', 'Amy', 'Tenglan', 'Tom', '1', '2', '3']
2 >>> names.sort()
3 >>> names
4 ['1', '2', '3', 'Alex', 'Amy', 'Amy', 'Tenglan', 'Tom']
5 
6 >>> names.sorted(reverse=True) #反转
7 >>> names
8 ['Tom', 'Tenglan', 'Amy', 'Amy', 'Alex', '3', '2', '1']
View Code

同样也可以利用reverse方法实现反转。

1 ['Alex', 'Amy', 'Amy', 'Tenglan', 'Tom', '1', '2', '3']
2 >>> names.sort()
3 >>> names
4 ['1', '2', '3', 'Alex', 'Amy', 'Amy', 'Tenglan', 'Tom']
5 
6 >>> names.reverse() #反转
7 >>> names
8 ['Tom', 'Tenglan', 'Amy', 'Amy', 'Alex', '3', '2', '1']
View Code

还需要注意的是,在python3中,不同数据类型是无法排序的

1 >>> names
2 ['Alex', 'Tenglan', 'Amy', 'Tom', 'Amy', 1, 2, 3]
3 >>> names.sort() #排序
4 Traceback (most recent call last):
5   File "<stdin>", line 1, in <module>
6 TypeError: unorderable types: int() < str() 
View Code
  • 保留原来列表的排列顺序

利用sorted方法实现。跟sort方法同理,给sorted方法的参数为“reverse=True”时,可以反向排序。

1 >>>names = ['Alex', 'Amy', 'Amy', 'Tenglan', 'Tom', '1', '2', '3']
2 >>>print(sorted(names))
3 ['1', '2', '3', 'Alex', 'Amy', 'Amy', 'Tenglan', 'Tom']
4 
5 >>>print(names)
6 ['Alex', 'Amy', 'Amy', 'Tenglan', 'Tom', '1', '2', '3']
View Code

列表元素下表获取

利用index方法实现。

1 >>> print(names)
2 ['Tom', 'Tenglan', 'Amy', 'Amy', 'Alex', '3', '2', '1']
3 >>> names.index("Amy")
4 2 #只返回找到的第一个下标
View Code

列表元素出现次数获取

利用count方法实现

1 >>> print(names)
2 ['Alex', 'Tenglan', 'Amy', 'Tom', 'Amy', 1, 2, 3]
3 >>> names.count("Amy")
4 2
View Code

获取列表长度

利用len方法实现。需要注意的是,在计算列表长度时,是从1开始的。

1 >>> names = ['Alex', 'Amy', 'Amy', 'Tenglan', 'Tom', '1', '2', '3']
2 >>> len(names)
3 8
View Code

列表切片操作

需要注意的是,“:”前面的索引表示起始位置,“:”后面的索引表示终止位置。

 1 >>> names = ["Alex","Tenglan","Eric","Rain","Tom","Amy"]
 2 >>> names[1:4]  #取下标1至下标4之间的数字,包括1,不包括4
 3 ['Tenglan', 'Eric', 'Rain']
 4 >>> names[1:-1] #取下标1至-1的值,不包括-1
 5 ['Tenglan', 'Eric', 'Rain', 'Tom']
 6 >>> names[0:3] 
 7 ['Alex', 'Tenglan', 'Eric']
 8 >>> names[:3] #如果是从头开始取,0可以忽略,跟上句效果一样
 9 ['Alex', 'Tenglan', 'Eric']
10 >>> names[3:] #如果想取最后一个,必须不能写-1,只能这么写
11 ['Rain', 'Tom', 'Amy'] 
12 >>> names[3:-1] #这样-1就不会被包含了
13 ['Rain', 'Tom']
14 >>> names[0::2] #后面的2是代表,每隔一个元素,就取一个
15 ['Alex', 'Eric', 'Tom'] 
16 >>> names[::2] #和上句效果一样
17 ['Alex', 'Eric', 'Tom']
View Code

列表解析

列表解析将for循环和创建新元素的代码合并成一行,并自动附加新元素。

1 >>>s = [value**2 for value in range(1,5)]
2 >>>print(s)
3 [1, 4, 9, 16]
View Code

数值列表

可以利用list方法和range方法,快速实现定义数值列表。

1 >>>numbers = list(range(1,30,3))
2 >>>print(numbers)
3 [1, 4, 7, 10, 13, 16, 19, 22, 25, 28]
View Code

可以利用max方法,min方法和sum方法,计算需要的值。

1 >>>numbers = list(range(1,30,3))
2 >>>print(numbers)
3 >>>print(min(numbers))
4 >>>print(max(numbers))
5 >>>print(sum(numbers))
6 [1, 4, 7, 10, 13, 16, 19, 22, 25, 28]
7 1
8 28
9 145
View Code

 

原文地址:https://www.cnblogs.com/cjaaron/p/8658113.html