序列解包

先看示例:

x,y,z=1,2,3
x,y=y,x
print(x,y,z)#输出为2,1,3

由输出结果看到,x和y的值交换了,在Python中,交换所做的事情叫序列解包或可选迭代解包,即将多个值得序列解开,然后放到变量序列中,例如:

nums=(1,2,3)
x,y,z=nums
print(x,y,z)

可以看到,序列解包后,变量获得了对应得值

再看一个例子:

student={‘name‘:‘xiaoming‘,‘number‘:110}
t=student.popitem()
print(t)
x,y=student.popitem()
print(x,y)

#输出(‘number‘, 110)name xiaoming

可见,此处作用于元组,使用popitem()方法将键-值作为元组返回,返回得元组可以直接赋值到两个变量中

序列解包允许函数返回一个以上得值并打包成元组,然后通过一个赋值语句进行访问

但是,序列解包中得元素数量必须和放置在赋值符号‘=’左边的数量完全一致,否则会报错

原文地址:https://www.cnblogs.com/cjluchen/p/8961841.html

时间: 2024-10-05 06:25:57

序列解包的相关文章

Python中的可变、不可变对象和赋值技巧序列解包

可变对象和不可变对象 在python中一切皆对象.在Python中不存在所谓的值传递调用,一切传递都是对象的引用,也可认为是传址. python中,对象分为可变(mutable)和不可变(immutable)两种类型,元组(tuple).数值型(number).字符串(string)均为不可变对象,而字典型(dictionary)和列表型(list)的对象是可变对象. 不可变对象 见一个例子,分析不可变对象的特点 python内置id()函数,用于返回对象的唯一标识(identity).id()

序列解包操作

解包操作是把序列(sequence)或映射(map)中的每个元素单独提取出来. 如果sequence为1,2,3,4,5 那么这样操后:one,two,*three = sequence 可以理解为:one==1,two==2,three==(3,4,5) 从上面这段代码可以看到args的参数类型是元组,而kw的参数类型是字典. 下面是一个必选参数,可变参数,关键字参数的示例:

Python_序列与映射的解包操作

解包就是把序列或映射中每个元素单独提取出来,序列解包的一种简单用法就是把首个或前几个元素与后面几个元素分别提取出来,例如: first, seconde, *rest = sequence 如果sequence里至少有三个元素,那么执行完上述代码后,first == sequence[0], second == sequence[0], rest == sequence[2:]. 函数接收不确定参数 当函数的参数不确定时,可以使用*args 和**kwargs,*args 没有key值,**kw

Python 序列与映射的解包操作

解包就是把序列或映射中每个元素单独提取出来,序列解包的一种简单用法就是把首个或前几个元素与后面几个元素分别提取出来,例如: first, seconde, *rest = sequence 如果sequence里至少有三个元素,那么执行完上述代码后,first == sequence[0], second == sequence[0], rest == sequence[2:]. 函数接收不确定参数 当函数的参数不确定时,可以使用*args 和**kwargs,*args 没有key值,**kw

MonoTouch 二三事(三)mono mkbundle 打包程序的解包支持

许久以后,这个续上这个系列的第三篇. 玩过mono的可能知道mono有一个工具mkbundle ,可以把mono的运行时与类库与你的程序的依赖程序集都打包成一个可执行文件,在win下为exe文件,例如mandroid.exe,mtouch.exe,在mac下的Mach-O文件,例如mtouch,mtouch-64. 根据他的源代码 https://github.com/mono/mono/tree/master/mcs/tools/mkbundle,我们得到: template_main.c i

Java之集合初探(二)Iterator(迭代器),collections,打包/解包(装箱拆箱),泛型(Generic),comparable接口

Iterator(迭代器) 所有实现了Collection接口的容器都有一个iterator方法, 用来返回一个实现了Iterator接口的对象 Iterator对象称作迭代器, 用来方便的实现对容器内的元素的遍历 迭代器是一种设计模式,它是一个对象,它可以遍历并选择序列中的对象,而开发人员不需要了解该序列的底层结构.迭代器通常被称为"轻量级"对象,因为创建它的代价小. Java中的Iterator功能比较简单,并且只能单向移动: (1) 使用方法iterator()要求容器返回一个I

Python 中星号作用:解包&打散

python中’*’和’**’的使用分两个方面,一个是计算,另一个是参数传递过程中元素的打包和解包.  计算方面 ‘*’和’**’在python中最常见的作用分别是‘相乘’和‘乘幂’,如下: >>> a = 2 >>> b = 3 >>> c = 5*6 >>> d = 4**3 >>> e = a*b >>> f = a**b 传递.打包.解包方面 函数的可变参数 对函数传递的参数进行打包(成元组

Python中的参数解包:`*`表达式和 `**`表达式

目录 1.参数解包:方法调用中的*表达式和**表达式 2.参数解包:方法定义中的*表达式和**表达式 3.在元组,列表,集合和字典中解包 4.Extended Unpacking:赋值表达式左边的*表达式 1.参数解包:方法调用中的*表达式和**表达式 如果语法*表达式出现在函数调用中,则该表达式必须是可迭代的. 这些可迭代集合的元素被视为附加的位置参数. 对于调用f(x1, x2, *y, x3, x4),如果y等于序列[y1,...,yM],则等效于调用f(x1, x2, y1, ...,

python之参数解包

# 参数解包:将整个list当做参数传给函数 list = [1, 2, 4] def add_fn(a, b, c): return a + b + c sum = add_fn(*list) print("参数解包:", sum) 运行结果: 参数解包: 7