2.3 列表和元组

列表

概念

列表中的元素可以是数字、字符串、嵌套列表、元组等。

列表中的元素以逗号分割开。

创建只有一个元素的列表是,最后一个‘,’不是必须的,比如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

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Hi程序小哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值