首页 > 编程语言 >Python 1-17 元组

Python 1-17 元组

时间:2023-05-22 11:04:31浏览次数:45  
标签:17 tuple Python 元素 list 元组 tup print


Python 1-17 元组

class tuple([iterable])

tuple 是一个不可变的序列类型。

>>> s = 'abc'
>>> l = [1,2]
>>> t = 1,2
>>> d = dict(a=1,b=2)
>>> set = {'a','b'}

1、元组创建

>>> tup = () # 创建空元组
>>> tup1 = (1, 2, 3, 4, 5 )
>>> tup2 = "a", "b", "c", "d" # 不需要括号也可以
>>> type(tup2) <class 'tuple'>
>>> list1 = ['Google', 'Taobao', 'Python', 'Baidu']
>>> tuple1 = tuple(list1)  # 实例化 tuple 类。
>>> tuple1 # ('Google', 'Taobao', 'Python', 'Baidu')

元组中只包含一个元素时,需要在元素后面添加逗号,否则括号会被当作运算符使用:
这是一种特殊情况,在实际操作中经常忘记添加逗号,尤其在传参的时候经常发生。

>>>tup1 = (50)
>>> type(tup1) # 不加逗号,类型为整型 <class 'int'>
>>> tup1 = (50,)
>>> type(tup1) # 加上逗号,类型为元组 <class 'tuple'>

2、删除元组

元组中的元素值是不允许删除的,但我们可以使用 del 语句来删除整个元组,如下实例:

tup = ('a', 'b')
del tup

3、元组运算符

与字符串一样,元组之间可以使用 + 号和 * 号进行运算。可以组合和复制,运算后会生成一个新的元组。

(1, 2, 3) + (4, 5, 6) # 连接
('Hi!',) * 4 # 复制
3 in (1, 2, 3)  # 元素是否存在
for x in (1, 2, 3): print (x) # 迭代

4、元组索引,截取

因为元组也是一个序列,所以可以访问元组中的指定位置的元素,也可以截取索引中的一段元素,如下所示:

>>> L = ('a', 'b', 'c')
>>> L[2] 
'c'
>>> L[-2]
'b'
>>> L[1:]
('b', 'c')

5、Python 内置函数

len(tuple) # 计算元组元素个数。
max(tuple) # 返回元组中元素最大值。
min(tuple) # 返回元组中元素最小值。

6、装包与解包

a, b, c = 1, 2, 3
t =  1, 2, 3 # 装包
print(type(t)) # <class 'tuple'>
a, b, c = t # 解包
print(t,a,b,c) # (1, 2, 3) 1 2 3
a,b = input().split() # 需求输入以空格分割
l=list('123456')
print(l)
for i in l:
    print(i,type(i)) # '1' ...

for i in range(len(l)):
    print(i,l[i]) 
    if l[i]=='3':y=i

for x in enumerate(l):
    print(x)

for x,y in enumerate(l):
    print(x,y)

7、元组是不可变的对象

>>> tup = ('p', 'y', 't', 'h', 'o', 'n')
>>> tup[0] = 'g'     # 不支持修改元素
TypeError: 'tuple' object does not support item assignment
>>> id(tup)     # 查看内存地址
4440687904
>>> tup = (1,2,3)
>>> id(tup)
4441088800    # 内存地址不一样了

重新赋值的元组 tup,绑定到新的地址,而不是原地修改。
适合用元组,比如主机地址和端口(ip,port),(“192.168.1.1”, 80),两者捆绑在一起,不允许修改。
因为 tuple 不可变,所以代码更安全,尽可能用 tuple 代替 list。

元组只保证它的一级子元素不可变,对于嵌套的元素内部,不保证不可变!

>>> tup = ('a', 'b', ['A', 'B'])
>>> tup[2][0] = 'X'
>>> tup[2][1] = 'Y'
>>> tup 
('a', 'b', ['X', 'Y'])

这个 tuple 定义的时候有3个元素,分别是 ‘a’,‘b’ 和一个 list。不是说 tuple 一旦定义后就不可变了吗?
当我们把 list 的元素 ‘A’ 和 ‘B’ 修改为 ‘X’ 和 ‘Y’ 后,tuple 变为:(‘a’, ‘b’, [‘X’, ‘Y’])。

表面上看,tuple 的元素确实变了,但其实变的不是 tuple 的元素,而是 list 的元素。tuple 一开始指向的 list 并没有改成别的 list,所以,tuple 所谓的“不变”是说,tuple 的每个元素,指向永远不变。即指向 ‘a’,就不能改成指向 ‘b’,指向一个 list,就不能改成指向其他对象,但指向的这个 list 本身是可变的!

理解了“指向不变”后,要创建一个内容也不变的 tuple 怎么做?那就必须保证 tuple 的每一个元素本身也不能变。
在使用元组的时候,请尽量使用数字、字符串和元组这种不可变的数据类型作为元组的元素,这样就能确保元组不发生变化。


标签:17,tuple,Python,元素,list,元组,tup,print
From: https://blog.51cto.com/u_1439909/6321630

相关文章

  • Python 2-02 命名空间和作用域
    命名空间和作用域一、命名空间命名空间(Namespace)是从名称到对象的映射,一般用Python字典来实现。为了解决项目中名字冲突的问题引入了命名空间的概念,命名空间可以嵌套。1、命名空间分类:内置名称(built-innames),Python语言内置的名称,比如函数名abs、char和异常名称Exception......
  • Python 2-01 函数
    一、函数定义def函数名(参数列表):函数体判断一个数是不是素数?#方法一:for循环判断素数num=int(input('请输入一个正整数:'))foriinrange(2,int(num**0.5)+1):ifnotnum%i:print(f'{num}不是素数')breakelse: print(f'{num}是素数')......
  • Python 2-06 闭包
    闭包Closures嵌套函数(nestedfunction),内函数引用了外函数的临时变量,并且外函数返回内函数的引用,这样就构成了一个闭包。defouter():x,y,z=10,'abc',[1,2]definner():print(x,y)returninnerf=outer()print(f.__closure__)#celltuple......
  • Python 1-24 练习五 综合练习
    1、无重复字符的最长子串给定一个字符串,请你找出其中不含有重复字符的最长子串的长度。#substr向右扩展一个元素,如果该元素已经在substr中,则需要将其及其前面的元素去掉。#可通过substr.index(c)定位元素或substr.split(c)[1]分割成子串#发现有重复字符时,可......
  • Python 2-05 高阶函数
    一、函数式编程函数是Python内建支持的一种封装,我们通过把大段代码拆成函数,通过一层一层的函数调用,就可以把复杂任务分解成简单的任务,这种分解可以称之为面向过程的程序设计。函数就是面向过程的程序设计的基本单元。而函数式编程(请注意多了一个“式”字)——FunctionalProgrammi......
  • Python 3-11 异常处理
    异常处理一、错误和异常1、句法错误句法错误又称解析错误:>>>whileTrueprint('Helloworld')File"<stdin>",line1whileTrueprint('Helloworld')^SyntaxError:invalidsyntax解析器会复现出现句法错误的代码行,并用小“箭头”指向行里检测到的第一......
  • Python 05 Selenium 等待
    等待WebDriver通常可以说有一个阻塞API。因为它是一个指示浏览器做什么的进程外库,而且web平台本质上是异步的,所以WebDriver不跟踪DOM的实时活动状态。大多数由于使用Selenium和WebDriver而产生的间歇性问题都与浏览器和用户指令之间的竞争条件有关。例如,用户指示浏览......
  • Python 1-11 练习一
    Python1-11练习一一、已知字符串s=“aAsmr3idd4bgs7Dlsf9eAF”,要求如下1、请将s字符串的大写改为小写,小写改为大写。#使用字符串的内置方法a.swapcase():s='aAsmr3idd4bgs7Dlsf9eAF't=s.swapcase()print(t)2、请将s字符串的数字取出,并输出成一个新的字符串。s=......
  • Python 1-10 字符串操作
    Python1-10字符串操作1、字符串拼接>>>s='hello'*2>>>s='hello'+'world'>>>s='hello''world'>>>......
  • Python 02 Xpath
    XpathXpath(XMLPathLanguage)是在XML文档中选择节点的语言一、XPath路径表达式1、XPath节点在XPath中,有七种类型的节点:元素、属性、文本、命名空间、处理指令、注释以及文档(根)节点。XML文档是被作为节点树来对待的,树的根被称为文档节点或者根节点。2、XPath节点关系父(Pa......