【Python】列表与元组

本文介绍了Python中列表和元组的基本概念与操作方法,包括创建、解析、切片及常见运算,并对比了列表与元组的特点与应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.   列表(list)

创建列表时,将元素放在一个 [ ] 中,元素之间用逗号隔开,表中元素类型可以不同。

lis1 = []
lis2 = [1, 2, 3, 4, 5]
lis3 = [1, 'a', [1, 2, 3], {'a': 12}]

1.1   list()

list ([interabel])  列表构建器

# 将元祖转换为列表
(1, 2, 3, 4, 5)
list((1, 2, 3, 4, 5))
# 将range类型转换为列表
range(10)
list(range(10))
# 将map对象转换为列表
map(str, range(10))
list(map(str, range(10)))
# 将zip对象转换为列表
zip('abc', [1, 2, 3])
list(zip('abc', [1, 2, 3]))
# 将enumerate对象转换为列表
enumerate('Python')
list(enumerate('Python'))
# 将字典转换完成列表时,只有键会放进列表
list(dict(name='jiang', age=14))
# 将字符串中每一个字符都放进列表
list('Python')
# 删除列表
t = list({1, 2, 3, 4})
print(t)
del t
# print(t)  # 报错NameError

1.2   列表解析式

构建一个列表,其元素有一个可迭代对象进行某类操作而产生。

# 将 0~9 中能整除三的元素平方
[i**2 for i in range(9) if i % 3 == 0]

( 有疑惑可参考 三元表达式-进阶语法-优快云Python入门技能树

1.3   列表切片

切片(Slicings)是获取有序序列中部分元素的方法。

[ start : end : step ]

切片会产生一个新列表。

lis = [i * 2 for i in range(0, 31, 3)]
print(lis[:])     # 取t中所有元素
print(lis[::3])   # 每三个元素中取一个元素
print(lis[-1:])   # 取最后一个元素
print(lis[:-1])   # 除最后一个元素之外的全部元素

例 :将列表中元素循环移动三位

# + 在数学运算为加,在列表之间为连接
print(lis[3:]+lis[:3])      # 左移
print(lis[-3:]+lis[:-3])    # 右移

1.4   常见序列运算

len()   序列长度   max()   序列最大值   min()   序列最小值

lis.index(x)   lis 中第一次出现的 x 元素的下标

lis = [0, 1]*8
print(lis)
print(lis.index(1))

lis.count(x)   lis 中 x 出现的次数

lis = [0, 1]*8
print(lis)
print(lis.count(1))

1.5   常见序列操作

del s[i:j:k]   将 lis[i:j:k] 从 s 中删除

s.append(x)   将 x 元素添加到 s 末尾

s.insert(i,x)   在位置 i 上插入 x

s.pop([i])   删除 s 位置 i 的元素

s.remove(x)   删除 s 中第一个 x

s.reverse()   逆序 s 所有元素,使原序列翻转,无返回值

1.6   列表常用方法

1.6.1   1.5的所有操作

lis.extend([ i , j ])   lis 末尾 添加 i 和 j

1.6.2   sorted()   sort()

sorted(iterable, cmp=None, key=None, reverse=False)

sort(*, key = None,reverse=False)   按元素大小排序,无返回值。

lis = list(range(10))
lis.reverse()
print(sorted(lis))
print(lis)
lis.sort(key=lambda x: x % 3)
print(lis)

1.7   s.copy()

浅复制,复制后,操作复制列表不改变被复制列表

lis1 = list(range(10))
lis2 = lis1
lis3 = lis1.copy()
lis2[3] = 300
lis3[6] = 600
print(lis1)


2.   元组(tuple)

元组,与列表类似,但其创建后元组内元素不可变。

eg:元组 [ 3 ] = 元素  将会报错 TypeError

创建列表时,将元素放在一个 [ ] 中,元素之间用逗号隔开,表中元素类型可以不同。

创建元组时,将元素放在一个 ( ) 中,元素之间用逗号隔开,表中元素类型可以不同。

t1 = ()
t2 = (1, 2, 3, 4, 5)
t3 = (1, 'a', [1, 2, 3], {'a': 12})
t4 = tuplr([1, 2, 3])

tuple()   创建与可迭代元素相同的元组

元组是不可变的,不能直接修改元祖的值,不能增添删除元素。元组访问速度比列表快,开销小,当只是进行遍历等操作时,可将列表转换为元组,需要修改时,再转换为列表。

元组可作为字典的键,也可作为集合的元素,但列表不可以,包括列表的元组也不可以。

2.1   生成器表达式(generate expression)

与 列表解释式 创造方式相似

# 将 0~9 中能整除三的元素平方
(i**2 for i in range(9) if i % 3 == 0)

注意事项:

        1. 它返回值并不是元组,而是一个迭代器。

        2. 生成器中,只有元素被读到内存中才被创建,因此不能求长度,不能索引和切片。

        3. 生成器常用于 for 循环,遍历结束 for 循环能够自动处理Stoplteratio异常,生成器对象                的next 方法或使用 next() 必须捕捉异常。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值