列表
概念
列表中的元素可以是数字、字符串、嵌套列表、元组等。
列表中的元素以逗号分割开。
创建只有一个元素的列表是,最后一个‘,’不是必须的,比如a = [1]
列表中的元素的数据类型可以不是统一的,比如[1, 2, 3, 9, (11, 8),"dfd", 10]
列表可以通过下标访问。
列表是可变类型。
列表常用操作:
代码示例
创建列表
#方式1:类对象
l = list()
#方式2:中括号
l = [1,2,3]
往列表中添加数据
l = [1,2,3]
l.append(4)#元素被加到了列表的末尾
print(l)
结果:
[1, 2, 3, 4]
l1 = [1,2]
l1.extend([3,4,5])
print(l1)
l1 = [1,2]
l1.extend((3,4,5))
print(l1)
l1 = [1,2]
l1.extend(" this is a list")
print(l1)
结果:
[1, 2, 3, 4, 5]
[1, 2, 3, 4, 5]
[1, 2, ' ', 't', 'h', 'i', 's', ' ', 'i', 's', ' ', 'a', ' ', 'l', 'i', 's', 't']
l1 = [1,2]
l2 = [3,4]
print(l1+l2)
l1 = [1,2,1,2,1,4,5,5,]
l1.insert(3,9)
print(l1)
结果:
[1, 2, 1, 9, 2, 1, 4, 5, 5]
列表复制
l1 = [1,2]
#方式1:赋值
l2 =l1
#方式2:copy函数
l2 = l1.copy()
print(l2)
print(id(l1),id(l2))
#两则的区别 赋值方式l2he l1的内存地址一样,方式2中l2和了的内存不同,所以是浅拷贝
列表*
#列表乘法
a = [1,2]*3
print(a)
#嵌套列表的乘法
b = [[1,2]]*3
print(b)
print(id(b[0]))
print(id(b[1]))
print(id(b[2]))
结果:
[1, 2, 1, 2, 1, 2]
[[1, 2], [1, 2], [1, 2]]
1405992599040
1405992599040
1405992599040
#嵌套列表乘法,其中每个内列表的地址相同
搜索列表
l1 = [1,2,1,3,1,4]
print(l1.index(1,2,5))
结果
2
从列表中取元素
l1 = [1,2,1,2,1,4,5,5,]
print(l1.pop(3)) #pop之后该元素就从列表中删除了
结果:
[1, 2, 1, 1, 4, 5, 5]
l1 = [1,2,1,2,1,4,5,5,]
print(l1[3])#通过下标方式获取不删除
排序
l1 = [1,2,1,2,1,4,5,5,]
print(l1.sort(key= lambda x:x%3, reverse=True))
print(l1)
结果:
[2, 2, 5, 5, 1, 1, 1, 4]
# 获取列表的第二个元素
def takeSecond(elem):
return elem[1]
# 列表
random = [(2, 2), (3, 4), (4, 1), (1, 3)]
# 指定第二个元素排序
random.sort(key=takeSecond)
# 输出类别
print('排序列表:')
print(random)
结果:
排序列表:
[(4, 1), (2, 2), (1, 3), (3, 4)]
from functools import cmp_to_key
nums = [4, 3, 2, 1]
print(sorted(nums,key=cmp_to_key(lambda a, b: a - b)))
结果:
[1, 2, 3, 4]
元组类型
定义
- 不可变数据类型。
- 创建只有一个元素的元组是,最后一个‘,’是必须的,比如a = (1,)
- 元组中的元素类型也可以不统一。
- 元组与列表的区别在于列表是可变对象,而元组是不可变对象,元组的元素不能修改,元组一旦初始化就不能修改。
- 元组不可变,所以元组更安全。
操作函数
代码示例
元组创建
t1 = tuple([1,2,3]) #参数是一个可迭代对象
t2 = (1,2,3,)
print(t1)
print(t2)
结果:
(1, 2, 3)
(1, 2, 3)
元组新增元素
tup1 = (1, 2, 3, 4, 5)
tup2 = ('a', 'b', 'c')
tup1+=tup2
print(tup1)
结果:
(1, 2, 3, 4, 5, 'a', 'b', 'c')
tup1 = (1, 2, 3, 4, 5)
print(tup1*3)
结果:
(1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5)
元组访问元素
t1 = tuple([1,2,3])
print(t1[0])
print(t1[1])
print(t1[2])
print(t1[1:2])
结果:
1
2
3
(2,)
应用场景
packing和unpacking
把多个用逗号分隔的值赋给一个变量时,多个值会打包成一个元组类型;把一个元组赋值给多个变量时,元组会解包成多个值然后分别赋给对应的变量。
a = 1
b = 2
c = 3
a,b,c= c, b,a
print("a={},b={},c={}".format(a,b,c))
结果:
a=3,b=2,c=1
a,b,c,d=(1,2,3,4)
print("a={},b={},c={},d={}".format(a,b,c,d))
结果:
a=1,b=2,c=3d=4
def test_tuple():
a=1
b=2
c=3
d=4
return a,b,c,d
a,b,c,d= test_tuple()
print("a={},b={},c={},d={}".format(a,b,c,d))
结果:
a=1,b=2,c=3d=4
data =(1,2,3,4)
def test_tuple(*args):
print(args)
for i in args:
print(i)
test_tuple(*data)
结果:
(1, 2, 3, 4)
1
2
3
4