元组tuple与列表list的异同,以及zip、zip_longest、unzip

适用于元组和列表通用的一些内置函数和访问方法:

a=(1,True,0,'Apple',[1,2,[1,3]])

# 通过索引访问
print(a[2])
# 输出 0
print(a[-1][2][1])
# 输出 3

print(a[-1])
# 输出 [1,2,[1,3]]

# 通过切片访问
print(a[0:2])
# 输出 (1, True)

print(a[:-1])
# 输出 (1, True, 0, 'Apple')

a=(1,2,3)
a+=(4,5,6)
print(a)
# 输出 (1,2,3,4,5,6)  
# 注意这里的a是一个新的元组

b=a*3
print(b)
# 输出 (1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6)

a=(1,2,3)

# 判断一个元素是否存在于元组中
print(1 in a)
# 输出 True

# 获取元组的长度
print(len(a))
# 输出 3

# 获取元组中最大元素
print(max(a))
# 输出 3

# 获取元组中最小元素
print(min(a))
# 输出 1

# 获取元组中元素的下标
print(a.index(3))
# 输出 2

# 获取元组中元素的个数
print(a.count(2))
# 输出 1

# 计算元组中元素的和
print(sum(a))

元组和列表的区别:
列表定义的时候使用[ ],元组使用( )
列表可以改变的,但是元组不可变,也就是元组定义好以后我们不能修改里面的元素
能使用元组的尽量使用元组
删除元组只能用del

定义一个元素的元组

# 定义一个元素的列表
print(type([1]))
# 输出 list

# 定义一个元素的元组
print(type((1)))
# 输出 int

# 因为( ) 在python中是数学运算符号
# 正确的做法是在元素后面添加一个逗号
print(type((1,)))
# 输出tuple

元组的元素不可修改,但元组的元素的元素可修改(修改之后元组中元素的指向没有发生变化)

a=(1,2,[3,4,5])

a[0]=10
# 会报错

a[-1][-1]=10
print(a)
# 输出 (1,2,[3,4,10])

参考教程

zip(*iterables) --> A zip object yielding tuples until an input is exhausted.输出是一个元组的列表

>>> list(zip('abcdefg', range(3), range(4)))
[('a', 0, 0), ('b', 1, 1), ('c', 2, 2)]

zip_longest 按最长的元组打包,使用前要导入itertools,缺省值为None,可自定义

import itertools as it
fruits = ['apple', 'banana', 'melon', 'strawberry']
prices = [10, 20, 30]
print(list(it.zip_longest(fruits, prices)))
# [('apple', 10), ('banana', 20), ('melon', 30), ('strawberry', None)]


fruits = ['apple', 'banana', 'melon', 'strawberry']
prices = [10, 20, 30]
print(list(it.zip_longest(fruits, prices, fillvalue='Sold out')))
# [('apple', 10), ('banana', 20), ('melon', 30), ('strawberry', 'Sold out')]

用zip(*zip_object)的方式将一个由zip()生成的zip object传递给zip(),注意前面要加一个星号,就可以实现将zip object又还原成各个iterables了。

zipTriple = zip(weekdays, weekdays_chinese, weekdays_japanese)
wk1, wk2, wk3 = zip(*zipTriple)
print(wk1)
print(wk2)
print(wk3)
# ('Monday', 'Wendsday', 'Tuesday', 'Thursday', 'Friday', 'Saturday', 'Sunday')
# ('星期一', '星期二', '星期三', '星期四', '星期五', '星期六', '星期日')
# ('月曜日', '火曜日', '水曜日', '木曜日', '金曜日', '土曜日', '日曜日')  

参考https://blog.csdn.net/chenxy_bwave/article/details/120307490

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值