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

一般应用

对于常见的集合类型,如tuple,list,string,files或任何可迭代对象(iterable,iterator,generator等),通常会碰到需要提取集合类型中的一系列元素或单个元素(item)的需求。Python提供了解压集合类型的操作。
通常,在函数中定义返回值时,我们通常可以这么写:return x, y,这种写法其是返回了一个tuple。
那么,比如我们有一个list,data = [‘ACME‘, 50, 91.1, (2012, 12, 21)]。我们可以按照list中各个子item的含义一起解压成各个单独的变量便于其后的操作。
name, shares, price, date = data
注意: 解压集合类型时,赋值表达式左边的变量个数必须与集合类型中元素的个数一致。

丢弃特定迭代对象中的元素

有时候并不是所有的元素都会在接下来的操作中用到,Python提供了特殊的语法来丢弃特定元素:
data = [‘ACME‘, 50, 91.1, (2012, 12, 21)] _, shares, price, _ = data

星形解压任意长度可迭代对象

需求:若可迭代对象元素太多,按照一般的写法,需要写数量众多的元素变量。Python提供了一种星形表达式的语法。如下:
record = (‘Dave‘, ‘[email protected]‘, ‘773-555-1212‘, ‘847-555-1212‘) name, email, *phone_numbers = user_record
星形表达式可以解压任意数量的元素,作为一个单独的list保存。值得注意的是,无论有多少电话号码被解包(包括没有电话号码),phone_numbers变量将始终是一个列表。 因此,任何使用phone_numbers的代码都不必考虑它可能不是列表或执行任何类型的附加类型检查的可能性。

原文地址:https://www.cnblogs.com/jeffrey-yang/p/11251592.html

时间: 2024-10-08 15:33:51

星形解压序列类型(或iterable可迭代对象类型)总结的相关文章

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)

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

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 = (4, 5) >>> x, y = p >>> x 4 >>> y 5 >>> >>> data = [ 'ACME', 

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

2017-12-19python全栈9期第四天第三节之iterable可迭代对象join之字符串和列表转换成字符串和range

#!/user/bin/python# -*- coding:utf-8 -*-s = 'zd's1 = '_'.join(s)print(s1)li = ['zs','ls','ww','zl','张达']s = '+++++++'.join(li)print(s)for i in range(0,10): print(i)for i1 in range(0,10,3): print(i1)for i2 in range(10,0,-1): print(i2)for i3 in range(0

Python学习-解压可迭代对象赋值给多个变量

解压序列赋值给多个对象 任何的序列(或者是可迭代对象)可以通过一个简单的赋值语句解压并赋值给多个变量.唯一的前提就是变量的数量必须跟序列元素的数量是一样的. >>> data = ['abcd','a',1,2,(3,4)]>>> a,b,c,d,e = data>>> a,b,c,d,e('abcd', 'a', 1, 2, (3, 4))>>> a,b,c,d,(e,f) = data>>> f4>>