写点什么

挑战 30 天学完 Python:Day6 数据类型 - 元组 tuple

作者:MegaQi
  • 2022-10-18
    上海
  • 本文字数:2823 字

    阅读完需:约 1 分钟

挑战 30 天学完 Python:Day6 数据类型 - 元组tuple

🎉 本系列为 Python 基础学习,原稿来源于 github 英文项目,大奇主要是对其本地化翻译、逐条验证和补充,想通过 30 天完成正儿八经的系统化实践。此系列适合零基础同学,会简单用但又没有系统学习的使用者。总之如果你想提升自己的 Python 技能,欢迎加入《挑战 30 天学完 Python》。

作者:大奇 MegaQi | Info 签约作者 ,专注测试开发技术实战干货分享,欢迎访问主页长期关注。

Tuple 元组

元组是不同数据类型的集合,它们是有序且不可变的。_tuple _使用圆括号()包裹元素。它一旦被创建便不可修改。也就是说我们不能像上节学习的 list 一样更改集合项。同时也不能使用像 add,insert,remove 等方法。在元组中仅有少量的方法,这些方法如下:

  • tuple():创建一个空的元组

  • count():计算元组中指定项的个数

  • index():返回指定项的索引值

  • + :连接两个或以上的元组成为新的元组

创建元组

元组的创建可以通过()tuple()实现。在创建的时候也可以同时在括号内初始化数据项。

  • 创建一个空的元组

# 直接变量等于()empty_tuple = ()# 或使用元组构造函数empty_tuple = tuple()
复制代码


  • 元组创建并初始化数据

# 语法tpl = ('item1', 'item2','item3')# 举例fruits = ('banana', 'orange', 'mango', 'lemon')
复制代码

元组长度

同之前学过的字符和列表一样,计算元组的长度使用 len() 内置函数。

# # 语法形式# tpl = ('item1', 'item2', 'item3')# len(tpl)
# 实际举例systems = ('Windowns','Linux','macOS')print(len(systems)) # 3
复制代码

元组取值

类似 list 数据类型,获取元组的项同样通过索引 index 方式。

  • 正向索引:下角[0]表示元组项 1,以此类推到元组长度减 1


# # 语法形式# tpl = ('item1', 'item2', 'item3')# first_item = tpl[0]# second_item = tpl[1]
fruits = ('banana', 'orange', 'mango', 'lemon')first_fruit = fruits[0] # bananasecond_fruit = fruits[1] # orange
last_index =len(fruits) - 1last_fruit = fruits[last_index]print(last_fruit) # lemon
复制代码


  • 负向索引:负索引表示从末尾开始,-1 表示最后一项,-2 表示第二项,元组长度的负数表示第一项。

# # 使用语法# tpl = ('item1', 'item2', 'item3','item4')# first_item = tpl[-4]# second_item = tpl[-3]
fruits = ('banana', 'orange', 'mango', 'lemon')first_fruit = fruits[-4] # bananasecond_fruit = fruits[-3] # orangelast_fruit = fruits[-1] # mango
复制代码

切片操作

我们可以通过指定元组中起始和结束位置的索引范围来切出子元组,其中返回值将是一个包含指定项的新元组。

  • 指定正向索引范围

# 语法形式tpl = ('item1', 'item2', 'item3','item4')all_items = tpl[0:4]         # all itemsall_items = tpl[0:]         # all itemsmiddle_two_items = tpl[1:3]  # does not include item at index 3
复制代码


使用实战例子如下:

其中请再次回忆第二行取所有元素右侧索引是 4 而不是 3 呢?

fruits = ('banana', 'orange', 'mango', 'lemon')all_fruits = fruits[0:4]    # 所有元组项all_fruits= fruits[0:]      # 所有元组项orange_mango = fruits[1:3]  # 右3不包含index=3, print => ('orange', 'mango')orange_to_the_rest = fruits[1:] #print => ('orange', 'mango', 'lemon')
复制代码


  • 指定负向索引范围

# 语法形式tpl = ('item1', 'item2', 'item3','item4')all_items = tpl[-4:]         # 所有项:从右侧倒数第四项,即正向index=0middle_two_items = tpl[-3:-1]  # 不包括索引3(-1)的项
复制代码


应用举例说明:

fruits = ('banana', 'orange', 'mango', 'lemon')all_fruits = fruits[-4:]    # 所有项orange_mango = fruits[-3:-1]  # 不包括索引3的项,打印输出为 ('orange', 'mango')orange_to_the_rest = fruits[-3:] # 打印输出为 ('orange', 'mango', 'lemon')
复制代码

转换 tuple 为 list

我们可以在元组和列表之间相互转换。因为元组是不可变的,因此如果我们想改变它则需要转换成 list。语法形式为list(元组)反之转换为tuple(列表)。以下看一些实际的例子:

fruits = ('banana', 'orange', 'mango', 'lemon')
fruits = list(fruits)fruits[0] = 'apple'print(fruits) # ['apple', 'orange', 'mango', 'lemon']
fruits = tuple(fruits)print(fruits) # ('apple', 'orange', 'mango', 'lemon')
复制代码

检查元组中项

我们可以使用in检查元组中是否存在指定项,它最终返回一个布尔值。

# # Syntax# tpl = ('item1', 'item2', 'item3','item4')# 'item2' in tpl # True
fruits = ('banana', 'orange', 'mango', 'lemon')print('orange' in fruits) # Trueprint('apple' in fruits) # Falsefruits[0] = 'apple' # TypeError: 'tuple' object does not support item assignment
复制代码

元组的连接

我们可以使用+操作符连接两个或多个元组。

# # syntax# tpl1 = ('item1', 'item2', 'item3')# tpl2 = ('item4', 'item5','item6')# tpl3 = tpl1 + tpl2
fruits = ('banana', 'orange', 'mango', 'lemon')vegetables = ('Tomato', 'Potato', 'Cabbage','Onion', 'Carrot')
fruits_and_vegetables = fruits + vegetablesprint(fruits_and_vegetables)
vegetables_and_fruits = vegetables + fruitsprint(vegetables_and_fruits)
复制代码

元组的删除

因为元组是不可变的。因此不能删除元组中的单个项,但可以使用 del 删除元组本身。

# # 语法# tpl1 = ('item1', 'item2', 'item3')# del tpl1
fruits = ('banana', 'orange', 'mango', 'lemon')del fruitsprint(fruits) # 提示错误 NameError: name 'fruits' is not defined
复制代码


🌕 能走这么远,你真的很厉害。你已经完成学习挑战的第六天课程。今天内容虽然不多,但还是需要一些练习来检验下学习效果。

第 6 天练习

练习 1 级

  1. 用两种方式创建一个空元组

  2. 创建两个具有关联的元组,如_兄弟 borthers _元组和 _姐妹 sisters _元组

  3. 然后将其中一个分配另一个组成 _兄弟姐妹 siblings _元组

  4. 请计算出新组合的元组(siblings)包含多少项

  5. 通过类型转换方式,完成新项的添加,如爸爸和妈妈。最终形成 family_members 元组<a name="Tu4xD"></a>

练习 2 级

  1. family_members 拆分出 兄弟姐妹元组_siblings_ 和 父母元组_parents_

  2. 首先创建 fruits, vegetablesanimal 元组(记得每个初始化几个值)。然后将三个元组合并起来赋值给变量名为 _food_stuff_tp _新元组。

  3. 将元组 food_stuff_tp 转成列表 food_stuff_lt

  4. food_stuff_tp 元组 或 food_stuff_lt 列表中分隔出中间一项或者两项

  5. food_stuff_tp 分别分别获取到前三项和后三项

  6. 彻底删除元组 food_staff_tp

  7. 完成如下元素检查。原始元组为 nordic_countries:

  • 查看 'Estonia' 是否存在 _nordic_countries _中

  • 查看 'Iceland' 是否存在 nordic_countries 中

nordic_countries = ('Denmark', 'Finland','Iceland', 'Norway', 'Sweden')
复制代码


🎉 CONGRATULATIONS ! 🎉

英文原文:Day 6 - Tuple


如喜欢通过“点赞👍收藏❤️关注➕”鼓励作者大奇

文章中如有错误或疑问欢迎指正和交流。

发布于: 刚刚阅读数: 4
用户头像

MegaQi

关注

InfoQ签约作者 |公众号: 大奇测试开发 2018-02-15 加入

分享一些系列测试平台开发教程,也记录一些自己研究的技术,遇到的问题,总之想分享一些干货内容,愿给这个行业贡献微不足道的力量,不断突破不断成长。

评论

发布
暂无评论
挑战 30 天学完 Python:Day6 数据类型 - 元组tuple_Python_MegaQi_InfoQ写作社区