多个字符串变量声明python

时间:2017-05-09 12:56:48

标签: python

我正在试图找出这段代码的作用:

printdead, printlive = '_#'

这是一个实现基本细胞自动机的网站:https://rosettacode.org/wiki/One-dimensional_cellular_automata#Python

显然我可以通过简单地写

来取代上述陈述
printdead = '_'
printlive = '#'

printdead = '_'; printlive = '#'

printdead, printlive = '_', '#'

这对我来说完全没问题。但第一个声明如何运作?

2 个答案:

答案 0 :(得分:3)

你是对的。

第一个语句将在一个字符串中拆分作为输入的字符串并解压缩列表。因此,使用此语法,左侧表达式中的变量需要与字符串中的字符一样多。

答案 1 :(得分:3)

它被称为可迭代解包。如果赋值的右侧是可迭代对象,则可以将值解压缩为不同的名称。字符串,列表和元组只是Python中迭代的几个例子。

>>> a, b, c = '123'
>>> a, b, c
('1', '2', '3')
>>> a, b, c = [1, 2, 3]
>>> a, b, c
(1, 2, 3)
>>> a, b, c = (1, 2, 3)
>>> a, b, c
(1, 2, 3)

如果您使用的是Python 3,则可以访问Extended Iterable Unpacking 这允许您在作业中使用一个通配符。

>>> a, *b, c = 'test123'
>>> a, b, c
('t', ['e', 's', 't', '1', '2'], '3')
>>> head, *tail = 'test123'
>>> head
't'
>>> tail
['e', 's', 't', '1', '2', '3']