数据结构是任何编程语言的关键部分。为了创建强大而性能良好的产品,必须非常了解数据结构。
在本文中,我们将研究Python编程语言的重要数据结构,元组。
元组是用逗号分隔并括在括号中值的集合。与列表不同,元组的元素是不可变的。不变性可以视为元组的识别特征。
我将通过示例解释元组的功能和对其的操作。
一、创建元组
元组由括号中的值组成,并用逗号分隔开
a=(3,4) print (a) print (type(a)) # (3, 4) # <class 'tuple'>
元组可以存储不同数据类型的值和重复值。
a = (3, 3, 'x', [1,2]) print (a) # (3, 3, 'x', [1, 2]) print (type(a)) # <class 'tuple'>
我们也可以不使用括号创建元组。用逗号分隔的一系列值将创建一个元组。
a = 3, 4, 5, 6 print (type(a)) # <class 'tuple'>
二、创建没有元素或只有1个元素的元组
创建没有元素的空元组
a = () print (type(a)) # <class 'tuple'>
创建具有1个元素的元组,需要在元素后面加上逗号,否则当做元素的普通变量类型处理
a = (3) print (type(a)) # <class 'int'> b = ([1,2]) print (type(b)) # <class 'list'>
正确的创建方法
a = (3,) print (type(a)) # <class 'tuple'> b = ([1,2],) print (type(b)) # <class 'tuple'>
三、元组是可迭代的
像列表一样,你可以遍历一个元组
a = (1, 2, 3) for i in a: print (i**2) ''' 1 4 9 '''
四、元组元素的访问
利用下标索引访问
a = (3, 5, 'x', 5) print (a[0]) print (a[-1]) # 3 # 5
利用切片访问
a = (1, 2, 5, 6, 7) print (a[-2:]) # (6, 7) print (a[:3]) # (1, 2, 5)
五、元组当前存放的元素是不可变的,但是可以具有可变元素
不变性可能是元组最具有识别性的特征。我们不能修改元组中的元素。
a = (3, 5, 'x', 5) a[0] = 7 # error
但是,元组可以包含可变元素,例如列表。
a = ([1,2], ['x', 'y']) a[0][0] = 99 a[1][0] = 't' print (a) # ([99, 2], ['t', 'y'])
六、元组的排序
元组当前存放的元素是不可变的,我们无法用sort进行排序
但是sorted可以将元组作为参数,并返回一个已经排序好的列表,注意,返回的是一个排序好的列表而不是一个排序好的元组。
a = (3, 5, 8, 2) b = sorted(a) print (b) # [2, 3, 5, 8] print (type(b)) # <class 'list'>
七、元组的常用函数
可以使用len()获取元组的长度
a = (3, 0, 2) print (len(a)) # 3
max(),min()返回元组中元素的最大,最小值
a = (3, 0, 2) print (max(a)) print (min(a)) # 3 # 0
tuple()用于将列表转换为元组
a = [1,2,3,4] print (tuple(a)) # (1,2,3,4)
八、count()和index()
count()可以用来统计元组中某个值出现的次数
a = (1, 'x', 1, 1, 'x') print (a.count('x')) # 2 print (a.count(1)) # 3
index()可以用来返回元组中元素的下标索引
a = (1, 'x', 3, 5, 'x') print (a.index('x')) # 1 print (a.index(1)) # 0
tips:如果一个值在元组中多次出现,index()会返回最先出现的索引
九、利用"+"拼接元组
我们可以利用“+”拼接元组得到一个新元组
a = (1, 2) b = ('x', 'y') c = a + b print (c) # (1, 2, 'x', 'y')
十、用元组让函数返回多个值
一般的,一个函数只能有一个返回值。我们可以用元组让函数返回多个值。以下函数接受一个数组,并返回该数组的总和与数组长度。
def count_sum(arr): count = len(arr) sum = arr.sum() return count, sum
该函数返回的是具有2个项目的元组:
import numpy as np arr = np.random.randint(10, size=8) def count_sum(arr): count = len(arr) sum = arr.sum() return count, sum a = count_sum(arr) print (a) # (8, 39) print (type(a)) # <class 'tuple'>
总结
元素和列表相似,都是值的集合,最大的区别就是不变性了。如有错误,疏漏,欢迎在留言区指正,希望能帮到python的初学者。
原文来自 python 客栈,欢迎关注
以上就是10个示例带你掌握python中的元组的详细内容,更多关于python 元组的资料请关注其它相关文章!
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。
更新动态
- 凤飞飞《我们的主题曲》飞跃制作[正版原抓WAV+CUE]
- 刘嘉亮《亮情歌2》[WAV+CUE][1G]
- 红馆40·谭咏麟《歌者恋歌浓情30年演唱会》3CD[低速原抓WAV+CUE][1.8G]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[320K/MP3][193.25MB]
- 【轻音乐】曼托凡尼乐团《精选辑》2CD.1998[FLAC+CUE整轨]
- 邝美云《心中有爱》1989年香港DMIJP版1MTO东芝首版[WAV+CUE]
- 群星《情叹-发烧女声DSD》天籁女声发烧碟[WAV+CUE]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[FLAC/分轨][748.03MB]
- 理想混蛋《Origin Sessions》[320K/MP3][37.47MB]
- 公馆青少年《我其实一点都不酷》[320K/MP3][78.78MB]
- 群星《情叹-发烧男声DSD》最值得珍藏的完美男声[WAV+CUE]
- 群星《国韵飘香·贵妃醉酒HQCD黑胶王》2CD[WAV]
- 卫兰《DAUGHTER》【低速原抓WAV+CUE】
- 公馆青少年《我其实一点都不酷》[FLAC/分轨][398.22MB]
- ZWEI《迟暮的花 (Explicit)》[320K/MP3][57.16MB]