当前位置: 首页 > news >正文

【Python】08、元组

文章目录

    • 1.元组
      • 1.1 元组创建
      • 1.2 元组解包(解构)
    • 2.可变对象
    • 3.== 和 is

元组(tuple)是一个不可变的序列,操作方式基本和列表是一致的,操作时就把元组当成一个不可变的列表即可。

一般希望数据不改变时,使用元组,其余情况使用列表

1.元组

1.1 元组创建

my_tuple = () # 创建一个空元组
my_tuple_2 = (1,2,3,4,5,6) # 创建非空元组
my_tuple_3 = 3,4,5,6 # 非空元组括号可以省略,

print(my_tuple,type(my_tuple))
print(my_tuple_2)
print(my_tuple_3)
# 结果:
() <class 'tuple'>
(1, 2, 3, 4, 5, 6)
(3, 4, 5, 6)

***Repl Closed***
  • 元组中的元素是不可更改的
my_tuple_2 = (1,2,3,4,5,6) # 创建非空元组
my_tuple_2[2] = 7

print(my_tuple_2)

# 结果:
TypeError: 'tuple' object does not support item assignment
  • 非空元组里至少需要存在一个逗号,否则会被识别成整型
my_tuple_1 = 1
my_tuple_2 = 1,

print(my_tuple_1,' ',type(my_tuple_1))
print(my_tuple_2,' ',type(my_tuple_2))

# 结果:
1   <class 'int'>
(1,)   <class 'tuple'>

***Repl Closed***

1.2 元组解包(解构)

  • 解包指的是将元组当中的每一个元素赋值给一个变量,解包也可用在列表中
my_tuple = 2,5,6,4,7
a,b,c,d,e = my_tuple

print('a=:',a);
print('b=:',b);
print('c=:',c);
print('d=:',d);
print('e=:',e);

# 结果:
a=: 2
b=: 5
c=: 6
d=: 4
e=: 7

***Repl Closed***
  • 利用解包可以交换变量的值
a = 7
b = 5
print('交换后:','a = ',a,'b = ',b)

# 利用元组解包交换
a , b = b ,a
print('交换后:','a = ',a,'b = ',b)

# 结果
交换后: a =  7 b =  5
交换后: a =  5 b =  7

***Repl Closed***
  • 解包时变量的个数和元组中的元素个数必须一致,也可以在变量前加一个星号(*),这样变量将会获取到元组中所有剩余的元素。星号(*)的位置可以任意,但是只能存在一个
my_tuple = 2,5,6,7
*a,b,c = my_tuple

print('a = ',a);
print('b = ',b);
print('c = ',c);


# 结果:
a =  [2, 5]
b =  6
c =  7

***Repl Closed***

2.可变对象

可变对象指的是对象中的值是可变的,列表就是一个可变对象。
修改对象值的时候,对象没有改变也就是对象的id没有变化,只是修改了值;
如果重新赋值对象,对象的id则会发生改变


a = [7,5,8,9]
print('修改前:a = ',a,'id = ',id(a))

a[0] = 32
print('修改后:a = ',a,'id = ',id(a))

a = [4,5,6]
print('赋值后:a = ',a,'id = ',id(a))

# 结果
修改前:a =  [7, 5, 8, 9] id =  2199142180608
修改后:a =  [32, 5, 8, 9] id =  2199142180608
赋值后:a =  [4, 5, 6] id =  2199143045056

***Repl Closed***
  • 在修改对象时,如果有其它变量也指向了这个对象,则修改也会在其它变量中体现
a = [7,5,8,9]
b = a
print('a = ',a,'id = ',id(a))
print('b = ',b,'id = ',id(b))

b[0] = 10
print('a = ',a,'id = ',id(a))
print('b = ',b,'id = ',id(b))

# 结果
a =  [7, 5, 8, 9] id =  2428708300544
b =  [7, 5, 8, 9] id =  2428708300544
a =  [10, 5, 8, 9] id =  2428708300544
b =  [10, 5, 8, 9] id =  2428708300544

***Repl Closed***

3.== 和 is

== 和 != 比较的是对象的值是否相等
is 和 is not 比较的是对象的id是否相等(比较两个对象是否为同一对象)

a = [7,5,8,9]
b = [7,5,8,9]

print('a = ',a,'id = ',id(a))
print('b = ',b,'id = ',id(b))

print('a == b:',a == b) # 判断对象的值是否相等
print('a is b:',a is b) # 判断是否同一个对象

# 结果
a =  [7, 5, 8, 9] id =  2066203780864
b =  [7, 5, 8, 9] id =  2066203633472
a == b: True
a is b: False

***Repl Closed***

相关文章:

  • 工程化与框架系列(35)--前端微服务架构实践
  • 递归时间复杂度(master),时间复杂度为O(NlogN)的排序
  • 使用spring data MongoDB对MongoDB进行简单CURD操作示例
  • 嵌入式人工智能应用- 第九章 物体识别
  • 织梦dedecmsV5.7提示信息提示框美化(带安装教程和效果展示)
  • 【NLP】 3. Distributional Similarity in NLP(分布式相似性)
  • AI数字人分身系统(Digital Human System)的源码开发、SaaS平台模型技术方案和开发步骤
  • 自由学习记录(44)
  • 2.4滑动窗口专题:将 x 减到 0 的最小操作数
  • GOC学习
  • LeetCode 3340.检查平衡字符串:模拟
  • C++模板特化与偏特化
  • 315周六复盘(118)本周回顾
  • Java中类和对象
  • R语言的移动应用开发
  • 对称加密算法及其在网页逆向分析中的应用
  • BT-Basic函数之首字母F
  • 六十天前端强化训练之第二十天React Router 基础详解
  • Redis学习
  • 栈区、堆区、静态区
  • 江苏淮安优化村级资源配置:淮安区多个空心村拟并入邻村
  • 【社论】跑赢12级狂风,敦煌做对了什么
  • 创历史同期新高!“五一”假期全国快递揽投超48亿件
  • 北美票房|“雷霆”开画票房比“美队4”低,但各方都能接受
  • 伊朗港口爆炸最新事故调查报告公布,2名管理人员被捕
  • 长线游、县域游、主题游等持续升温,假期文旅市场供需两旺