008、Python数据类型之列表

Python数据类型之列表

1、介绍

列表由一系列按特定顺序排列的元素组成。列表通常包含多个元素,也可以将任何东西加入列表中,其中的元素之间可以没有任何关系。

列表是Python中最基本的数据结构,列表是最常用的Python数据类型,列表的数据项不需要具有相同的类型。列表中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推。

Python有6个序列的内置类型,但最常见的是列表和元组。序列都可以进行的操作包括索引,切片,加,乘,检查成员。此外,Python已经内置确定序列的长度以及确定最大和最小的元素的方法。

2、列表基本操作

1. 创建列表
# 使用list方法,创建一个空列表
list01 = list()

# 使用方括号,声明一个空列表
list02 = []

# 使用列表推倒式生成列表
list_ = [i for i in iterble]

注意,这两种方法都可以创建列表,但是都是空列表。

# 创建一个列表
list03 = [1, 2, 3, 4, 5]
2. 列表索引和切片

python当中,对可迭代数据进行索引和切片时,起始位置都是从0开始。

# 索引列表当中的第三个数据,由于索引位置是从0开始,所以要索引第三个数据是写2
list04 = list03[2]  # 3

# 切片, 获取1到3(不包含3)的数据
list05 = list03[1: 3]  # [2, 3]

# 切片, 获取1到3(包含3)的数据
list06 = list03[1: 4]  # [2, 3, 4]

# 切片, 获取从2到结束的数据
list07 = list03[2:]  # [3, 4, 5]
list08 = list03[2: -1]  # [3, 4, 5]  与上面的结果相同

从上面可以看出,切片获取数据是顾头不顾尾的,所以要想获取包含结尾的数据时,需要在最后的索引位置上+1

3. 列表更新
# 修改索引为2的数据元素改为"python"
list03[2] = "python"
print(list03)  # [1, 2, 'python', 4, 5]

# 切片赋值
list03[1: 3] = [6]
print(list03)  # [1, 6, 4, 5]
4. 删除元素

删除元素,使用del语句

del list03[2]
print(list03)  # [1, 2, 4, 5]

3、列表操作方法

list09 = ["Jack", "Tom", "Lucy", "Peter", "Lily"]
1>. append() 方法

在列表的末尾添加元素

list09.append("Jerry")  # ["Jack", "Tom", "Lucy", "Peter", "Lily", "Jerry"]
2>. insert() 方法

在列表的指定位置插入元素

list09.insert(2, "Alix")  # ["Jack", "Tom", "Alix", Lucy", "Peter", "Lily"]
3>. extend() 方法

extend让你能够同时将多个值附加到列表末尾,为此可将这些值组成的序列作为参数提供给方法extend。换而言之,你可使用一个列表来扩展另一个列表。

list10 = ["Abel", "David", "Evan"]
list09.extend(list10)  # ["Jack", "Tom", "Lucy", "Peter", "Lily", "Abel", "David", "Evan"]
4>. remove() 方法

删除指定的元素

list09.remove("Tom")
print(list09)  # ["Jack", "Lucy", "Peter", "Lily"]
5>. pop() 方法

pop从列表中删除一个元素(末尾为最后一个元素),并返回这一元素。

print(list09.pop())  # Lily
print(list09)  # ['Jack', 'Tom', 'Lucy', 'Peter']

print(list09.pop(0))  # Jack  删除指定索引位置的元素
print(list09)  # ['Tom', 'Lucy', 'Peter']
6>. clear() 方法

清空列表中所有的元素

list09.clear()
print(list09)  # []
7>. index() 方法

从列表中获取指定值的索引位置

print(list09.index("Lucy"))  # 2
8>. count() 方法

count计算指定的元素在列表中出现了多少次

list11 = ["Jack", "Tom", "Lucy", "Tom", "Peter", "Lily", "Tom"]
print(list11.count("Tom"))  # 3
9>. copy() 方法
list12 = ["Jack", "Tom", "Lucy", "Peter", "Lily"]
list13 = list12.copy()
print("list12的内存ID: ", id(list09), "list13的内存ID: ", id(list10))  # list12的内存ID:  2077482563968 list13的内存ID:  2077482563008

从查看ID可以发现,经过copy的数据,在内存当中的地址已经发生了变化。

list12.append("Abel")
print(list12)  # ["Jack", "Tom", "Lucy", "Peter", "Lily", "Abel"]
print(list13)  # ["Jack", "Tom", "Lucy", "Peter", "Lily"]

从上面的修改可以看出,修改原列表,被复制的列表不会发生变化

4、列表的排序操作

1>. sort() 方法
sort(*, key=None, reverse=None)

sort()只能通过关键字(仅限关键字参数)传递的两个参数如下:

  • key : 指定一个函数,该函数用于从每个列表元素提取用于进行比较操作的键,如key = str.lower。列表中每一个条目对应的键都会被计算一次,然后用于整个排序过程。默认值None表示列表条目将会被直接排序,而不会计算出一个单独的用于比较的键值。
  • reverse : 是一个布尔值,如果其值为True,则列表中的元素将会按照比较方法的反序进行排序。
list13 = [3, 1, 4, 8, 9, 6, 7, 5, 2]
list13.sort()
print(list13)  # [1, 2, 3, 4, 5, 6, 7, 8, 9]

list13.sort(key=lambda x: x)
print(list13)  # [1, 2, 3, 4, 5, 6, 7, 8, 9]

list13.sort(reverse=True)
print(list13)  # [9, 8, 7, 6, 5, 4, 3, 2, 1]

list14 = ["E", "b", "D", "t", "A", "o", "w"]
list14.sort()
print(list14)  # ['A', 'D', 'E', 'b', 'o', 't', 'w'] 默认排序

list14.sort(key=str.upper)
print(list14)  # ['A', 'b', 'D', 'E', 'o', 't', 'w']

list14.sort(key=str.upper, reverse=True)
print(list14)  # ['w', 't', 'o', 'E', 'D', 'b', 'A']

说明:

sort()方法会直接修改list,这在对大列表进行排序时可以节约空间;该方法的副作用是不会返回排序后的list。

sort()方法保证稳定性。如果能保证两个比较相当的元素不会改变相对位置,那么这个排序就是稳定的,这有助于通过多个条件进行排序,比如 先按部门排序,然后再按工资级别排序。

5、列表的其它操作

列表除了以上方法以外,还可以对列表进行以下操作

1>. 判断元素是否在列表中
list15 = ["Jack", "Tom", "Abel", "Evan", "Lucy"]
print("Lily" in list15)  # False
print("Lily" not in list15)  # True
print("Jack" in list15)  # True
2>. 列表拼接
list16 = ["Jack", "Tom", "Abel", "Evan"]
list17 = ["Lucy", "Lily", "Angel"]
list18 = list16 + list17
print(list18)  # ["Jack", "Tom", "Abel", "Evan", "Lucy", "Lily", "Angel"]

list19 = list16 * 2
print(list19)  # ["Jack", "Tom", "Abel", "Evan", "Jack", "Tom", "Abel", "Evan"]
3>. 其它操作
list20 = [3, 4, 5, 6, 8, 9, 1, 2, 7]

print(len(list20))  # 9

print(max(list20))  # 9
print(min(list20))  # 1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值