python-数据结构(元祖、列表、集合)

本文介绍了Python中的三种数据结构:元祖、列表和集合。元组是不可变的,适合多线程共享;列表是可变的,支持复制、颠倒、合并等操作;集合不包含重复元素,支持增删查操作。还讨论了列表生成式、filter、map、reduce等高级用法,以及heapq和sorted在排序和选取最大/最小元素中的应用。

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

元祖

(‘a’,‘b’,‘c’) 元祖是不可变的
为什么要用元祖,元祖的不可变性保证了多线程程序中数据的安全性,可以共享使用这个数据,且元祖比列表的占用空间小

列表

[‘a’,‘b’,'c] 列表可变,元素可重复
● 列表的复制 b= a[:] 可以将a列表完全复制给b列表
● 列表颠倒 a[::-1]
a=[1,2,3] a[::-1]是[3,2,1]

  • 列表合并
    a.extend([3,4])
    a=[1,2,3,4]
    b=[5,6,2,3]
    a.extend(b)
    print(a) 
    -----------
    结果[1,2,3,4,5,6,2,3]
  • 列表转字符串 ‘’.join(tmplist)
a = ['a','b','c']
print('-'.join(a)) ##打印a-b-c

注意:如果list中有数字,使用join会报错

a = ['a','b','c',123]
	print('-'.join(a))
TypeError: sequence item 3: expected str instance, int found

修改方法: print('-'.join('%s' %str for str in a))

  • 利用range生成list
    注意range生成的列表最后一个元素是n-1,即生成的列表返回是[n,m)
list(range(1,11))#返回[1,2,3,4,5,6,7,8,9,10],

集合

  • 集合不允许有重复元素
    set1 = {1, 2, 3, 3, 3, 2}
    print(set1) #打印{1,2,3}
  • 集合增加元素 set1.update([4,5])
  • 弹出首个元素 set1.pop()
  • 元素移除 set1.remove(3)
  • 增加元素 set1.add(9)
  • 两个集合间求差集、交集
    set2 = {0,1,2}
    print(set1.difference(set2)) #差集
    print(set1 &set2) #交集

列表生成式生成列表、集合、字典

相当于按照条件对已有列表、集合、字典去过滤,生成一个新的列表、集合、字典
句型结构 [num for num in numlist if num>2]

#挑选出值大于100的商品信息
prices2 = {
   key: value for key, value in prices.items() if value > 100}
print(prices2)
#挑选出列表中大于1的数值
numlist= [2,3,2,2,3,1,0]
numlist2= [num for num in numlist if num>1]
print(numlist2)
#生成数字n以内的数字对应的平方字典
print({
   i:i*i for i in range(1,n+1})

使用filter 按条件过滤列表、字典

与列表生成式不同的是,filter可以结合函数过滤对象,可以处理相对复杂的过滤

filter(function,iterable)

function -- 判断函数。
iterable -- 可迭代对象

返回list 中的奇数:

def is_odd(n): 
return n % 2 == 1
newlist = filter(is_odd, [1, 2, 3, 4, 5, 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值