SEO只是外表
技术才是我的追求

*x ,= p的python语法

*x ,= p相当于x = list(p),大概可以理解为对列表p的复制。这个语法是 extended iterable unpacking,翻译过来可以叫做元组解包,元组拆包,迭代解包,不过迭代解包比较正确一点吧。

迭代解包可以应用到任何可迭代对象上,唯一的硬性要求是,被可迭代对象中的元素数量必须要跟接受这些元素的元组的空档数一致。

也可以使用用 * 来表示忽略多余的元素。这种方式的优点在于:更好的赋值,更好的获取迭代对象中的某个值。

文字性的说明还是很难明白吧,举个例子:

一般的:

>>> p = [1, 2, 3]
>>> a, b, c = p
>>> a
1
>>> b
2
>>> c
3

迭代解包:

>>> p = [1, 2, 3]
>>> a, *b = p
>>> a
1
>>> b
[2, 3]

当然对迭代的对象也是可以的

>>> a, *b = rang(5)
>>> a
0
>>> b
[1, 2, 3, 4]

注意反过来 ,*x= p是不行的,会提示错误的。

当然*x ,= px = p是不同的,x = p意味着x只不过是p列表的另一个名字,下面就是两种代码比较:

>>> p = [1, 2]
>>> *x, = p 
>>> x == p
True
>>> x is p
False
>>>
>>>
>>> x = p
>>> x == p
True
>>> x is p
True

*x ,= p相同,还有两种复制列表的方法:

x = list(p)
x = p[:]

python3.3后还有一种方法:

x = p.copy()

未经允许不得转载:棋哥SEO博客 » *x ,= p的python语法

分享到:更多 ()

相关推荐

  • 暂无文章

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址