python_cookbook之路:数据结构-解压可迭代对象赋值给多个变量以及扩展的迭代解压语法(*)

1.一一对应:

>>> data = [ ‘ACME‘, 50, 91.1, (2012, 12, 21) ]
>>> name, shares, price, date = data
>>> name
‘ACME‘
>>> date
(2012, 12, 21)
>>> name, shares, price, (year, mon, day) = data
>>> name
‘ACME‘
>>> year
2012
>>> mon
12
>>> day
21
>>>
>>> data = [ ‘ACME‘, 50, 91.1, (2012, 12, 21) ]
>>> name, shares, price, date = data
>>> name
‘ACME‘
>>> date
(2012, 12, 21)
>>> name, shares, price, (year, mon, day) = data
>>> name
‘ACME‘
>>> year
2012
>>> mon
12
>>> day
21
>>>

2.可迭代对象元素个数超过变量个数:,*匹配返回的是个列表

>>> record = (‘ACME‘, 50, 123.45, (12, 18, 2012))
>>> name, *_, (*_, year) = record
>>> name
‘ACME‘
>>> year
2012
>>>

原文地址:https://www.cnblogs.com/wuchenggong/p/9190873.html

时间: 2024-11-11 18:28:44

python_cookbook之路:数据结构-解压可迭代对象赋值给多个变量以及扩展的迭代解压语法(*)的相关文章

第一章 1.2 解压可迭代对象赋值给多个变量

问题:如果一个可迭代对象的元素个数超过变量个数时,会抛出一个 ValueError . 那么怎样才 能从这个可迭代对象中解压出N个元素出来? 解决方案:Python的星号表达式可以用来解决这个问题.比如,你在学习一门课程,在学期末的时 候, 你想统计下家庭作业的平均成绩,但是排除掉第一个和后一个分数.如果只有四 个分数,你可能就直接去简单的手动赋值, 但如果有24个呢?这时候星号表达式就派上 用场了: def drop_first_last(grades): first, *middle, la

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

Python 迭代对象、迭代器、生成器详解

在了解Python的数据结构时,容器(container).可迭代对象(iterable).迭代器(iterator).生成器(generator).列表/集合/字典推导式(list,set,dict comprehension)众多概念参杂在一起,难免让初学者一头雾水,本文将一一为大家进行介绍,希望对大家学习python有所帮助. 容器(container) 容器是一种把多个元素组织在一起的数据结构,容器中的元素可以逐个地迭代获取,可以用 in ,  not in 关键字判断元素是否包含在容器

王亟亟的Python学习之路(七)-date,continue,迭代对象,生成器

转载请注明出处:王亟亟的大牛之路 大多数的语言都提供了时间操作的相应类,诸如java的java.util.Date,java.util.Calendar等等, Python中是time 和 calendar . 首先需要导包import time; 然后就可以使用了,mTime= time.time()那结果呢? 1448004021.1337154 (而且这个数字还继续在变) WHY? 用ticks计时单位返回从12:00am, January 1, 1970(epoch) 开始的记录的当前操

python之函数闭包、可迭代对象和迭代器

一.函数名的应用 # 1,函数名就是函数的内存地址,而函数名()则是运行这个函数. def func(): return print(func) # 返回一个地址 # 2,函数名可以作为变量. def func1(): print(666) f1 = func1 f2 = f1 f2() # 就等于func1() 此时执行函数 # 3,函数名可以作为函数的参数. def func1(): print(666) def func2(x): x() func2(func1) # 输出666 func

python当中的 可迭代对象 迭代器

学习python有一段时间了,在学习过程中遇到很多难理解的东西,做一下总结,希望能对其他朋友有一些帮助. 完全是个人理解,难免有错,欢迎其他大神朋友们批评指正. 1 迭代 什么是迭代呢??我们可以这样理解,一个容器类型的数据,比如 列表[ ]  .元组 () 和 字典 { }, 我们可以把这样类型的数据放入for temp in [1,2,3] 当中,temp 被一次一次的赋值成为后面容器内数据,然后我们拿到temp进行一些想做的事情.那么for 循环中自动的帮我们把数据一次一次的取出来,可以理

what's the python之可迭代对象、迭代器与生成器(附面试题)

可迭代对象 字符串.列表.元祖.集合.字典都是可迭代的,数字是不可迭代的.(可以用for循环遍历取出内部元素的就是可迭代的) 如何查看一个变量是否为可迭代: from collections import Iterable l = [1,2,3,4] t = (1,2,3,4) d = {1:2,3:4} s = {1,2,3,4} print(isinstance(l,Iterable)) print(isinstance(t,Iterable)) print(isinstance(d,Ite

可迭代对象、迭代器、生成器之间的关系

from collections import Iterable,Iterator from abc import ABCMeta, abstractmethod assert 1 in [1,2,3] # assert 4 in [1,2,3] # assert len([1,2]) >=5,'列表元素个数小于5' d = {1: 'foo', 2: 'bar', 3: 'qux'} assert 1 in d # assert 'foo' in d print(isinstance(iter

3-3利用生成器实现可迭代对象

包含yield语句的函数就是生成器函数.函数里有yield关键字,则是生成器,生成器内置有__iter__方法,只不过调用__iter__返回的是生成器本身,利用这一特性,可以创建一个可迭代对象的类. 生成器即实现了,next迭代器对象,同时也实现了__iter__()可迭代对象,返回的是他自身 >>> def f(): print('1111') yield 1 #当调用next()时 yield会把后面的内容返回,但保存当前状态,下次调用next()时继续执行. print('222