Python 列表

序列

​ 在Python中,序列是最基本的数据结构,他是一块用于存放多个值的连续内存空间。Python中内置了5个常用的序列结构,分别是列表、元组、集合、字典和字符串。其中,除字典和集合意外,每个序列的每个元素都分配了一个索引(位置),并支持切片,相加,相乘操作。

序列概述

索引

​ 序列中每个元素都有一个编号,也称为索引。这个索引是从0开始递增的,即0表示第一个元素,1

表示第二个元素。依此类推。

​ 特殊的,Python的索引可以是个负数,从右往左计数,也就是最后一个元素索引为-1,倒数第二个为-2以此类推。

python索引 的图像结果

切片

​ 切片操作是访问序列中元素的另一种方法,它可以访问一定范围内的元素。通过切片操作可以生成一个新的序列。

sname[start:end:step]
  • sname: 序列名
  • start: 切片起始位置,不指定则默认为0。
  • end: 切片截至位置。不指定则默认为序列长度。
  • step: 切片的步长。省略则为步长为1,冒号可以去掉。

如果想要复制整个序列,可以将start和end省去,但要保留中间冒号。如:sname[:]

序列相加

​ 在Python中,可以用(+)实现两种相同类型的序列相加,即把序列链接但不去重。

注意:“同类型”指的是同为列表、元组或字符串,序列中的元素类型不同也可以相加。

li1 = ["阿拉斯加的", "大大大大"]
li2 = [1, 2, 3, 4, 5]

print(li1 + li2)

---

['阿拉斯加的', '大大大大', 1, 2, 3, 4, 5]
乘法

​ 使用一个整数n乘一个数列会生成新的序列。新序列的内容是原序列被重复n遍。特别的,在序列初始化时我们也可以通过乘法实现一定程度上的代码简化。

li1 = ["_1", "_2"] * 2

print(li1)
print(li1 * 2)

---
['_1', '_2', '_1', '_2']
['_1', '_2', '_1', '_2', '_1', '_2', '_1', '_2']
检查某个元素是否是序列成员

语法格式:关键字innot in

value in sequence

li1 = ["_1", "_2"] * 2

print("_1" in li1)
print(1 not in li1)
print(1 in li1)
---
True
True
False
Python的内置函数
函数说明
len()返回序列包含的元素
max()返回序列元素中的最大值
min()返回序列元素中的最小值
list()将序列转为列表
str()将序列转为字符串
sum()计算个元素和
sorted()对元素进行排序
reversed()反转序列
enumerate()将序列组合成一个索引序列,多用在for循环当中

列表(list)

​ 列表是Python中内置的可变序列。形式上每个元素都放在一对中括号中,相邻元素用“,”隔开。内容上,可以把数字,字符串,列表,元组等任何类型的元素放入列表,并且同一列表中的元素,元素类型可以不同。

列表的创建与删除
# 直接创建
li1 = [1, 2, 3]

# 空列表
li2 = []

# 数值列表
# 语法: list = (data)  data是可以转为列表的数据

li3 = (range(1, 10, 2))

# 删除列表
# 语法: del listname
# Python 自带垃圾回收机制会自动摧毁不用的列表,因此即使不删除其内存也会被自动回收。

del li1

访问列表中的元素
li1 = [1, 2, 3]

# 输出整个列表
print(li1)
# 输出指定索引的列表元素
print(li1[0])

--- 
[1, 2, 3]
1
遍历列表
li1 = [1, 2, 3, 4, 5, 6, 7, 8]

# 用for直接循环实现
for i in li1:
    print(i)
---
1
2     
3     
4     
5     
6     
7     
8
---

for i in range(2, len(li1) - 3):
    print(li1[i], end=' ')

---
3 4 5
---

# 结合enumerate()函数实现,其中:start是索引i的起始值。但注意term依然从0开始
for index, term in enumerate(li1, start=4):
    print(index, term)

---
4 1
5 2
6 3
7 4
8 5
9 6
10 7
11 8
---
添加、修改和删除列表元素
添加元素
append() 在末尾添加元素

​ 前边讲过用“+”将两个序列链接,也能实现向列表添加元素。但这种方法比使用列表对象的append()方法。

​ 列表对象的append()方法用于在列表末尾添加元素。

# 语法格式 listname.append(obj) 注意obj只能是一个元素,不是多个
a = ["听我说"]
print(a)
a.append("因为有你")
print(a)

---
['听我说']
['听我说', '因为有你'
--- 
insert() 在指定位置添加元素 慢
# 语法 list.insert(index, obj)
extend()把一个列表全部元素加到另一个列表末尾
# 语法格式 listname.extend(obj) 注意obj只能是一个元素,不是多个
a = ["听我说"]
# b = ["因为有你", '温暖了四季']
print(a)
a.extend(["因为有你", '温暖了四季'])
# a.extend(b)
print(a)

---
['听我说']
['听我说', '因为有你', '温暖了四季']
---
修改元素

​ 利用索引即可。 a[1] = ‘xxx’

删除元素 del / remove()
a = ["听我说", "因为有你", '温暖了四季']

# 用索引删除
print(a)
del a[-1]
print(a)

# 根据元素值删除
if a.count("听我说") > 0:  # 保证该元素出现过,否则remove()时会报错
    a.remove("听我说")
print(a)

# 注意: 用remove()删除元素是,要先判断元素是否存在

---
['听我说', '因为有你', '温暖了四季']
['听我说', '因为有你']
['因为有你']
---
对列表进行统计计算
方法语法作用
count()listname.count(obj)统计列表中指定元素出现的个数
indexlistname.index(obj)返回指定元素在列表中首次出现的下标
sumsum(list,[,start])
其中start表示统计结果从哪个数开始,可选参数,默认为0。
返回列表中各元素的和
对列表进行排序
使用列表对象的sort()方法和使用内置sorted()函数实现
listname.sort(key=None, reverse=False)
sorted(listname,key=None, reverse=False)
  • key: 表示指定每个列表元素提取一个比较键(如key = str.lower 表示排序时不区分大小写)
  • reverse: 可选参数。True 为降序; Flase 为升序。默认为升序
a = ['2', 'a', 'g,', 'b', 'A', "嘎嘎", ]
b = ['2', 'a', 'g,', 'b', 'A', "嘎嘎", ]

print(a)
a.sort()
print(a)

print()

print(sorted(b))
print(b)

---
['2', 'a', 'g,', 'b', 'A', '嘎嘎']
['2', 'A', 'a', 'b', 'g,', '嘎嘎']

['2', 'A', 'a', 'b', 'g,', '嘎嘎']
['2', 'a', 'g,', 'b', 'A', '嘎嘎']
---

这两种函数作用基本相同,但使用sort()方法会改变原先列表的来咧顺序。

用sorted()则会建立一个原列表的副本,该副本为排序后的列表。

未完待定

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值