Python学习-元祖

十四、元祖

元祖是不可变的

1、语法:

列表:[元素1,元素2,元素3,….]
元祖:(元素1,元素2,元素3,….)

rhyme = (1,2,3,4,5,"上山打老虎")
rhyme
(1, 2, 3, 4, 5, '上山打老虎')
rhyme = 1,2,3,4,5,"上山打老虎"
rhyme
(1, 2, 3, 4, 5, '上山打老虎')

2、元祖可以通过下标来获取元素

rhyme[0]
1
rhyme[-1]
'上山打老虎'

3、元祖支持切片操作

rhyme[:3]
(1, 2, 3)
rhyme[3:]
(4, 5, '上山打老虎')
rhyme[:]
(1, 2, 3, 4, 5, '上山打老虎')

4、元祖—查

count和index方法

nums=(3,1,9,6,8,3,5,3)
nums.count(3)
3
heros = ("蜘蛛侠","绿巨人","黑寡妇")
heros.index("黑寡妇")
2

5、运算符—(+和*)

s = (1,2,3)
t = (4,5,6)
s+t
(1, 2, 3, 4, 5, 6)
s*3
(1, 2, 3, 1, 2, 3, 1, 2, 3)

6、嵌套

s = (1,2,3)
t = (4,5,6)
w = s,t
w
((1, 2, 3), (4, 5, 6))

7、迭代

for each in s:
    print(each)
    
1
2
3
 
for i in w:
    for each in i:
        print(each)
        
1
2
3
4
5
6

8、列表推导式对元祖进行转换

s = (1,2,3,4,5)
[each *2 for each in s]
[2, 4, 6, 8, 10]

9、如何生成只有一个元素的元祖

错误写法:

x = (520)
x
520
type(x)
<class 'int'>

正确写法:

x = (520,)
x
(520,)
type(x)
<class 'tuple'>

10、打包和解包

打包:就是生成一组元祖

t =(123,"Love",3.14)
t
(123, 'Love', 3.14)

解包:将打包的元祖一次性赋值给三个变量名的行为

x,y,z = t
x
123
y
'Love'
z
3.14

这种打包和解包的行为适用于任何的序列类型,
比如列表:

t =[123,"Love",3.14]
t
[123, 'Love', 3.14]
x,y,z = t
x
123
y
'Love'
z
3.14

比如字符串:

a,b,c,d = "Love"
a
'L'
b
'o'
c
'v'
d
'e'

需要注意的是:
赋值号左边的变量名数量,必须跟右侧序列的元素数量一致。
小技巧:

a,b,*c = "Love"
a
'L'
b
'o'
c
['v', 'e']

单独一个_,表示一个匿名变量,临时变量。

11、元祖真的是固若金汤么?

元祖中的元素虽然是不可变的,但如果元祖中的元素是指向一个可变的列表,那么我们依然是可以修改列表里面的内容的。

s = [1,2,3]
t = [4,5,6]
w = (s,t)
w
([1, 2, 3], [4, 5, 6])
w[0][0] = 0
w
([0, 2, 3], [4, 5, 6])
### Python Tuple 教程 #### 什么是元组? Python 中的元组(Tuple)是一种不可变的数据结构,属于有序序列的一种。它类似于列表(List),但具有不可更改的特点。这意味着一旦创建了一个元组,就不能对其内容进行增删改操作[^3]。 #### 如何定义元组? 元组可以通过多种方式定义: 1. **空元组** 定义一个空元组非常简单,只需使用一对圆括号即可。 ```python empty_tuple = () print(empty_tuple) # 输出:() ``` 2. **单元素元组** 如果要定义只有一个元素的元组,则需要在该元素后加上逗号以区分普通的变量声明。 ```python single_element_tuple = ("only",) print(single_element_tuple) # 输出:("only",) ``` 3. **多元素元组** 多个元素之间用逗号分隔,默认情况下即使没有圆括号也会被识别为元组。 ```python multi_elements_tuple = "apple", "banana", "cherry" print(multi_elements_tuple) # 输出:("apple", "banana", "cherry") ``` 4. **通过 `tuple()` 函数构建** 可以利用内置函数 `tuple()` 将其他可迭代对象转化为元组。 ```python list_to_convert = ["red", "green", "blue"] converted_tuple = tuple(list_to_convert) print(converted_tuple) # 输出:("red", "green", "blue") ``` #### 访问元组中的元素 由于元组是一个有序集合,因此可以像列表一样通过索引来访问其中的元素。需要注意的是,负数索引表示从末尾开始计数。 ```python example_tuple = (10, 20, 30, 40, 50) # 正向索引 print(example_tuple[0]) # 输出:10 # 负向索引 print(example_tuple[-1]) # 输出:50 ``` #### 切片操作 元组支持切片操作,允许提取子集而不改变原元组。 ```python sliced_tuple = example_tuple[1:4] print(sliced_tuple) # 输出:(20, 30, 40) ``` #### 不可变特性及其影响 因为元组是不可变的,所以尝试重新分配某个位置上的值会引发错误。 ```python try: example_tuple[0] = 99 except TypeError as e: print(e) # 输出:'tuple' object does not support item assignment ``` 然而,如果元组内部包含可变的对象(如列表),则这些对象本身是可以被修改的。 ```python mutable_inside_immutable = ([1, 2], [3, 4]) mutable_inside_immutable[0][0] = 99 print(mutable_inside_immutable) # 输出:([99, 2], [3, 4]) ``` #### 常见方法与功能 尽管元组不像列表那样灵活,但它仍然提供了一些有用的方法: - `.count(x)` 返回指定元素 x 的出现次数。 - `.index(x[, start[, end]])` 查找第一个等于 x 的元素的位置;可选参数用于限定查找范围。 示例演示如下: ```python sample_tuple = ('a', 'b', 'c', 'd', 'e') # count 方法 print(sample_tuple.count('b')) # 输出:1 # index 方法 print(sample_tuple.index('d')) # 输出:3 ``` 此外,在某些场景下,元组因其不变性和哈希能力而成为理想的选择,比如作为字典键或集合成员时[^4]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值