Chapter One:数据结构和算法-解压序列赋值给多个变量

一、问题:

现在有一个包含 N 个元素的元组或者是序列,怎样将它里面的值解压后同时赋值
给 N 个变量?

二、解决方案:

代码示例:


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

>>> p = (45)

>>> x, y = p

>>> x

4

>>> y

5

>>>

>>> data = ‘ACME‘5091.1, (20121221) ]

>>> name, shares, price, date = data

>>> name

‘ACME‘

>>> date

(20121221)

>>> name, shares, price, (year, mon, day) = data

6

《Python Cookbook》第三版, Release 2.0.0

>>> name

‘ACME‘

>>> year

2012

>>> mon

12

>>> day

21

>>>

如果变量个数和序列元素的个数不匹配,会产生一个异常。
代码示例:


1

2

3

4

5

6

>>> p = (45)

>>> x, y, z = p

Traceback (most recent call last):

File "<stdin>", line 1in <module>

ValueError: need more than 2 values to unpack

>>>

三、总结

实际上,这种解压赋值可以用在任何可迭代对象上面:

  1. 列表
  2. 元组
  3. 字符串
  4. 文件对象
  5. 迭代器
  6. 生成器

代码示例:


1

2

3

4

5

6

7

8

9

>>> s = ‘Hello‘

>>> a, b, c, d, e = s

>>> a

‘H‘

>>> b

‘e‘

>>> e

‘o‘

>>>

有时候,你可能只想解压一部分,丢弃其他的值。对于这种情况 Python 并没有提
供特殊的语法。

但是你可以使用任意变量名去占位,到时候丢掉这些变量就行了。
代码示例:


1

2

3

4

5

6

7

>>> data = ‘ACME‘5091.1, (20121221) ]

>>> _, shares, price, _ = data

>>> shares

50

>>> price

91.1

>>>

你必须保证你选用的那些占位变量名在其他地方没被使用到。

原文地址:https://www.cnblogs.com/luoahong/p/9680847.html

时间: 2024-10-14 09:11:44

Chapter One:数据结构和算法-解压序列赋值给多个变量的相关文章

python 基础知识点 (二) 解压序列赋值给多个变量

问题 现在有一个包含 N 个元素的元组或者是序列,怎样将它里面的值解压后同时赋值给 N 个变量? 解决方案 任何的序列(或者是可迭代对象)可以通过一个简单的赋值语句解压并赋值给多个变量. 唯一的前提就是变量的数量必须跟序列元素的数量是一样的. 代码示例: >>> p = (4, 5) >>> x, y = p >>> x 4 >>> y 5 >>> >>> data = [ 'ACME', 50,

解压序列赋值给多个变量

p = (4,5) x, y = p print(x, y ) 结果: 4 5 data = ['ACME',50,91.1,(2018,7,10)] name,shares,price,date = data print(name) print(shares) print(price) print(date) 结果: ACME 50 91.1 (2018, 7, 10) name,shares,price,(year,mon,day) = data print(name) print(shar

python基础-解压序列

解压序列 示例1:左边值必须和右边的值是一一对应的关系,否则会报错 1 >>> a,b,c={1,2,3} #a=1,b=2,c=3 2 >>> a 3 1 4 >>> b 5 2 6 >>> c 7 3 示例2:左边值必须和右边的值是一一对应的关系,否则会报错 1 >>> a,b,c,d,e='hello' #解压序列,左边值必须和右边的值是一一对应的关系,否则会报错 2 >>> a 3 'h'

D20-05 函数闭包 装饰器 06 ..解压序列

框架 #装饰器的框架 import time def timmer(func): #func=test def wrapper(): start_time=time.time() func() #就是在运行test stop_time=time.time() print('运行时间是%s'%(start_time-stop_time)) return wrapper def test(): time.sleep(3) print('test函数运行完毕') test = timmer(test)

星形解压序列类型(或iterable可迭代对象类型)总结

一般应用 对于常见的集合类型,如tuple,list,string,files或任何可迭代对象(iterable,iterator,generator等),通常会碰到需要提取集合类型中的一系列元素或单个元素(item)的需求.Python提供了解压集合类型的操作. 通常,在函数中定义返回值时,我们通常可以这么写:return x, y,这种写法其是返回了一个tuple. 那么,比如我们有一个list,data = ['ACME', 50, 91.1, (2012, 12, 21)].我们可以按照

Python3 解压序列

一般情况 x,y,z = 1,2,3 print("x:",x) # x:1 print("y:",y) # y:2 print("z:",z) # z:3 针对元祖 name = ("qiaobushi","wanglihong","leibushi") x,y,z = name print(name) print("x:",x) print("y:&qu

解压序列

一个列表或者元组(只要是序列形式都可以)取出元素,取头和取尾不用索引的方式: l1 = [1,2,3,4,5,6,7] a,b,c,d,e,f,g,h = l1 这样a和h就是我们所需要的值,但是如果序列比较怎么办呢? 解法如下 l1 = [1,2,3,4,5,6,7] a,*_,h = l1 两个变量交换值的方法 a = 1 b = 2 x = a a = b b = x f1 =1 f2 =2 f1,f2 = f2,f1

&lt;python3-cookbook&gt;第一章:数据结构和算法

第一章:数据结构和算法 介绍:这本书是高级用法,不是小白使用书目的:写作目的是记录下自己学习这本书的过程以及收获 1.1解压序列赋值给多个变量: 问题:现在有一个包含 N 个元素的元组或者是序列,怎样将它里面的值解压后同时赋值给 N 个变量? 解决方案:通过一个简单的赋值语句解压并赋值给多个变量. 唯一的前提就是变量的数量必须跟序列元素的数量是一样的. 1.2解压可迭代对象赋值给多个变量: 问题:如果一个可迭代对象的元素个数超过变量个数时,会抛出一个 ValueError . 那么怎样才能从这个

Python学习笔记——数据结构和算法(一)

1.解压序列赋值给多个变量 任何的序列(或者是可迭代对象)可以通过一个简单的赋值语句解压并赋值给多个变量. 唯一的前提就是变量的数量必须跟序列元素的数量是一样的. >>> data = [ 'ACME', 50, 91.1, (2012, 12, 21) ]>>> name, shares, price, date = data >>> name, shares, price, (year, mon, day) = data >>>