小甲鱼 发表于 2020-10-27 04:48:01

已有 25 人购买  本主题需向作者支付 5 鱼币 才能浏览 购买主题

小古比鱼 发表于 2020-11-20 11:57:57

打包和解包蛮有趣的!修改元组内列表的元素值也很讨巧!

痴我一拳 发表于 2021-5-17 16:19:48

元组复习:
rhyme = (1,2,3,4,5,"上山打老虎")
>>> rhyme
(1, 2, 3, 4, 5, '上山打老虎')
>>> rhyme = 1,2,3,4,5,"上山打老虎"
>>> rhyme
(1, 2, 3, 4, 5, '上山打老虎')
>>> ryhme
Traceback (most recent call last):
File "<pyshell#56>", line 1, in <module>
    ryhme
NameError: name 'ryhme' is not defined
>>> rhyme
1
>>> rhyme[-1]
'上山打老虎'
>>> rhyme=10
Traceback (most recent call last):
File "<pyshell#59>", line 1, in <module>
    rhyme=10
TypeError: 'tuple' object does not support item assignment
>>> rhyme[:3]
(1, 2, 3)
>>> rhyme[:]
(1, 2, 3, 4, 5, '上山打老虎')
>>> rhyme[::2]
(1, 3, 5)
>>> rhyme[::-1]
('上山打老虎', 5, 4, 3, 2, 1)
>>> nums =(3,1,9,6,8,3,5,3)
>>> nums.count(3)
3
>>> heros =("蜘蛛侠","绿巨人","黑寡妇")
SyntaxError: invalid character ',' (U+FF0C)
>>> heros =("蜘蛛侠","绿巨人","黑寡妇")
>>> heros.index("黑寡妇")
2
>>> 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)
>>> w =s,t
>>> w
((1, 2, 3), (4, 5, 6))
>>> 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
>>> s =(1,2,3,4,5)
>>>

>>> (each*2 for each in s)
<generator object <genexpr> at 0x000001944092B660>
>>> x = (520)
>>> type(x)
<class 'int'>
>>> x=(520,)
>>> type(x)
<class 'tuple'>
>>> t =(123,"FishC",3.14)
>>> t
(123, 'FishC', 3.14)
>>> x,y,z = t
>>> x
123
>>> y
'FishC'
>>> z
3.14
>>> t =(123,"FishC",3.14)
>>> t =
>>> x,y,z =t
>>> x
123
>>> y
'FishC'
>>> z
3.14
>>> a,b,c,d,e = "FishC"
>>> a
'F'
>>> b
'i'
>>> c
's'
>>> d
'h'
>>> e
'C'
>>> a,b,c = "FishC"
Traceback (most recent call last):
File "<pyshell#107>", line 1, in <module>
    a,b,c = "FishC"
ValueError: too many values to unpack (expected 3)
>>> a,b,*c = "FishC"
>>> a
'F'
>>> b
'i'
>>> c
['s', 'h', 'C']
>>> x,y =10,20
>>> x
10
>>> y
20
>>> _=(10,20)
>>> x,y=_
>>> x
10
>>> y
20
>>> s=
>>> t=
>>> w =(s,t)
>>> w
(, )
>>> w =0
>>> w
(, )
>>>

zdasd 发表于 2021-5-19 10:59:51

**元组**

元组也是一个序列,元组既能像列表那样同时容纳多种类型的对象,也拥有字符串不可变的特性。

从语法上来讲,元组和列表的差别就是列表用的是方括号,而元组用的是圆括号。
列表 - [元素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, '上山打老虎')

元组也可以通过下标来获取元素

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

因为元组是不可变的,所以试图修改元组内容的行为是不可取的

>>> rhyme = 10
报错

元组也支持切片操作

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

元组只支持“查”,即count和index方法


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

加号和乘号两个运算符也是可以使用的

>>> 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)

元组可以嵌套

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

元组同意是支持迭代的

>>> 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

列表推导式同样可以对元组进行一个转换

>>> s = (1, 2, 3, 4, 5)
>>>


生成只有一个元素的元组

>>> x = (520)
>>> x
520
>>> type(x)
<class 'int'>
[这种方法是不对的]

得这样写才行

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


打包和解包
打包:生成一个元组

>>> t = (123, "FishC", 3.14)
>>> t
(123, 'FishC', 3.14)
[我们将这三个数打包到了一起]

解包:将他们一次性赋值给三个变量名

>>> x, y, z = t
>>> x
123
>>> y
'FishC'
>>> z
3.14

这种行为不只适用于元组,也适用于任何的序列类型,比如列表


>>> t =
>>> x, y, z = t
>>> x
123
>>> y
'FishC'
>>> z
3.14

比如字符串

>>> a, b, c, d, e = "FishC"
>>> a
'F'
>>> b
'i'
>>> c
's'
>>> d
'h'
>>> e
'C'

赋值号左边的变量名数量必须和右侧元素数量一致,否则就会报错

>>> a, b, c = "FishC"
[报错]

使用小技巧:加星号

>>> a, b, *c = "FishC"
>>> a
'F'
>>> b
'i'
>>> c
['s', 'h', 'C']

python可以直接进行赋值

>>> x , y = 10, 20
>>> x
10
>>> y
20

它背后的实现逻辑是先通过元组进行打包,然后将元组进行解包

>>> _ = (10, 20)
>>> x, y = _
>>> x
10
>>> y
20

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

>>> s =
>>> t =
>>> w = (s, t)
>>> w
(, )
>>> w = 0
>>> w
(, )

adeylx 发表于 2021-7-27 15:08:00

{:10_265:}

pcanswer 发表于 2021-8-2 10:31:57

速更下一章

周生生ZZ 发表于 2021-8-13 13:47:04

打卡026

Cecilia.D 发表于 2021-8-13 14:05:32

已复习,谢谢

FengHL 发表于 2021-9-6 10:42:51

学习

进击的Mia 发表于 2021-9-14 12:50:39

原来元祖有这么多可说的{:10_297:}

ASM023 发表于 2022-2-24 11:53:16

打卡~~{:10_254:}{:10_254:}

Er3nYeager 发表于 2022-4-16 09:56:14

打卡学习

码农心 发表于 2022-5-7 10:20:58

觉得好难啊啊啊 啊

KinokoCC 发表于 2022-5-18 14:06:59

每天学习,我就是在进步。
为什么要将元组设计成不可变的序列呢?虽然知道了元组的定义和语法,但是还是想快一点知道具体应用呀。

Mxxxx. 发表于 2022-5-24 18:24:29

打卡

sinsis 发表于 2022-6-15 01:10:12

谢谢

ctx111 发表于 2022-8-4 22:07:05

打卡
>>> a=1,2,3,4,5,'ctx'
>>> a
(1, 2, 3, 4, 5, 'ctx')
>>> a
1
>>> a[-1]
'ctx'
>>> a[:]
(1, 2, 3, 4, 5, 'ctx')
>>> a
(3, 4, 5, 'ctx')
>>> a[:3]
(1, 2, 3)
>>> a[::3]
(1, 4)
>>> a[::-1]
('ctx', 5, 4, 3, 2, 1)
>>> n=3,1,6,7,7,9,7,0,3,4
>>> n
(3, 1, 6, 7, 7, 9, 7, 0, 3, 4)
>>> n.count(3)
2
>>> n.count(7)
3
>>> n.index(7)
3
>>> n.index(6)
2
>>> n.index(9)
5
>>> b=a,n
>>> b
((1, 2, 3, 4, 5, 'ctx'), (3, 1, 6, 7, 7, 9, 7, 0, 3, 4))
>>> for each in n:
        print(each)

       
3
1
6
7
7
9
7
0
3
4
>>> for i in b:
        for each in i:
                print(each)

               
1
2
3
4
5
ctx
3
1
6
7
7
9
7
0
3
4
>>>
[(1, 2, 3, 4, 5, 'ctx', 1, 2, 3, 4, 5, 'ctx'), (3, 1, 6, 7, 7, 9, 7, 0, 3, 4, 3, 1, 6, 7, 7, 9, 7, 0, 3, 4)]
>>>

>>>

>>>x=(1,)

SyntaxError: unexpected indent
>>> x=(1,)
>>> x
(1,)
>>> type(x)
<class 'tuple'>
>>> t=a,b,n
>>> t
((1, 2, 3, 4, 5, 'ctx'), ((1, 2, 3, 4, 5, 'ctx'), (3, 1, 6, 7, 7, 9, 7, 0, 3, 4)), (3, 1, 6, 7, 7, 9, 7, 0, 3, 4))
>>> a,b,n=t
>>> a
(1, 2, 3, 4, 5, 'ctx')
>>> b
((1, 2, 3, 4, 5, 'ctx'), (3, 1, 6, 7, 7, 9, 7, 0, 3, 4))
>>> n
(3, 1, 6, 7, 7, 9, 7, 0, 3, 4)
>>> a,b,c,d,e="ctx"
Traceback (most recent call last):
File "<pyshell#273>", line 1, in <module>
    a,b,c,d,e="ctx"
ValueError: not enough values to unpack (expected 5, got 3)
>>> a,b,c="ctx"
>>> a
'c'
>>> b
't'
>>> c
'x'
>>> "ctx"=a,b,c
SyntaxError: cannot assign to literal
>>> =t
SyntaxError: cannot assign to literal
>>> y=
>>> z,x,c,v,m=y
>>> z
1
>>> x
2
>>> c
3
>>> v
4
>>> m
5
>>> a,*b='ctx'
>>> a
'c'
>>> b
['t', 'x']
>>>
>>> q=(,)
>>> q=8
Traceback (most recent call last):
File "<pyshell#292>", line 1, in <module>
    q=8
IndexError: tuple index out of range
>>> q
(, )
>>> q
Traceback (most recent call last):
File "<pyshell#294>", line 1, in <module>
    q
IndexError: tuple index out of range
>>> q
5
>>> q
7
>>> q=11111
>>> q
(, )
>>> z,y=12,45
>>> z
12
>>> y
45
>>> _=(12,45)
>>> z,y=_
>>> z
12
>>> y
45

JZt2902019046 发表于 2022-8-10 10:40:28

打卡

xydsds 发表于 2022-8-21 11:24:17

{:5_109:}

胚芽鞘 发表于 2022-9-7 20:59:36

{:10_243:}
页: [1] 2 3
查看完整版本: 第026讲:元组