Python【赋值语句】专讲,可不能只会 a=b 啊!建议掌握!

本文介绍了Python中高级赋值语句的使用,包括如何通过切片和扩展的序列解包技巧处理不同类型的序列,如字符串、列表和元组,以及注意事项。作者分享了如何通过实例演示这些技巧及其应用场景。
摘要由CSDN通过智能技术生成

20

30

a,b 默认是一个元组,[20,30]是一个列表,不同的序列类型之间也可以通过这种方式进行赋值。


二、高级赋值语句


何为高级赋值语句?就是常规的赋值方法进行操作是会报错的,得进行一些更高级一点的操作。比如说要把字符"SPAM"赋值给a和b,常规赋值是这样的:

s = “SPAM”

a,b = s

print(a,b )

然后运行之后就会报错,字符串元素多于元组(a,b)里面的元素,直接复制是会报错的。

1.小技巧一

遇到这种情况,我们就需要用到切片的操作进行赋值了:

s = “SPAM”

a,b = s[:3],s[2:]

print(a,b )

运行结果:

SPA AM

2.小技巧二

除了用切片的方式,我们还可以用其他的方式给a和b赋值:

s = “SPAM”

(a,b),c = s[:2],s[2:]

print(a,b,c )

运行结果:

S P AM

这种操作相当于在大元组((a,b),c)里面分了一个小元组(a,b),然后对a,b进行赋值。

3.小技巧三

举例:用赋值语句把列表[1,2,3,4,5]进行每次减少1个元素并输出列表。

l = [1,2,3,4,5]

while l :

l = l[1:]

print(l)

运行结果:

[2, 3, 4, 5]

[3, 4, 5]

[4, 5]

[5]

[]

4.案例

现有一个二维列表[[[1,2,3],[4,5,6],[7,8,9]] ,如何用序列赋值的方法进行输出列表里的每一个元素?方法如下:

s = [[1,2,3],[4,5,6],[7,8,9]]

for (a,b,c) in s:

print(a,b,c)

运行结果:

1 2 3

4 5 6

7 8 9

(a,b,c)和 s 是不同类型的序列类型,通过序列赋值的方法也能够实现。


三、拓展的序列解包


前面的常见赋值语句表里面我们讲过拓展的序列解包操作:

| 方式 | 解释 |

| — | — |

| a,*b = “hello” | 扩展的序列解包 |

那么它该如何使用?首先我们应该知道 *b 是有何用:

*b:获取分配完之后所剩的数据,封装成列表进行输出

举例:

a,*b = “abcdefg”

print(a)

print(b)

运行结果:

a

[‘b’, ‘c’, ‘d’, ‘e’, ‘f’, ‘g’]

通过这个例子可以看出,a被第一个元素赋值,剩下的都给了b,并且剩下的元素都被封装成了列表。

1.小技巧一

既然上面我们讲了

a,*b = “字符串”

那么如果我们多加一个元素来赋值呢?又会如何?

a,*b,c = “abcdefg”

print(a)

print(b)

print©

运行结果:

a

[‘b’, ‘c’, ‘d’, ‘e’, ‘f’]

g

可以看出来的是,还真给c留出来了一个对象并赋值,这个方法可以灵活运用。

2.小技巧二

如果说我们对调一下位置:

*b,a = “abcdefg”

print(a,b)

运行结果:

g [‘a’, ‘b’, ‘c’, ‘d’, ‘e’, ‘f’]

可以看出,字符串的最后一个元素g还是赋值给了a,所以对调位置也是可以的,此时的a将会从后面取。

3.小技巧三

如果我们只给3个元素,但有4个元素要赋值,那么 * b 能拿到值吗?

a,c,*b,d = “abc”

print(a,b,c,d)

运行结果:

a [] b c

结果b是1个空列表,因为字符串只有三个字符,不够给b,同样的,不管你怎么交换 * b 的位置,结果都一样,也就是说,会优先给其他元素赋值, b 的优先级最低,有时候会拿不到值*。

4.注意点:*b 不能直接赋值

有一个点我们需要注意一下,*b 是不能直接赋值的:

在这里插入图片描述

前面被赋值的对象只能是列表或者元组的序列类型,而 *b 单独存在时是不属于这种类型的。

这个时候我们如何改正它?很简单,把前面变成元组或者列表就可以了:

在这里插入图片描述

哪怕是加个逗号,*b都可以变成元组。

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Python开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

img

img

img

img

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注Python)

3939786134ca.png)

img

img

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注Python)

img
  • 7
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值