- Python算法详解
- 张玲玲
- 445字
- 2020-06-27 17:50:51
2.2.5 将序列分解为单独的变量
在Python程序中,可以将一个包含N个元素的元组或序列分解为N个单独的变量。这是因为Python语法允许任何序列(或可迭代对象)通过简单的赋值操作分解为单独的变量,唯一的要求是变量的总数和结构要与序列相吻合。下面的实例文件fenjie.py演示了将序列分解为单独变量的过程。
源码路径:daima\第2章\xinghao.py
p = (4, 5) x, y = p print(x) print(y) data = [ 'ACME', 50, 91.1, (2012, 12, 21) ] name, shares, price, date = data print(name) print(date)
执行结果如图2-14所示。
图2-14 执行结果
如果要分解未知或任意长度的可迭代对象,上述分解操作简直是为其量身定制。通常在这类可迭代对象中会有一些已知的组件或模式(例如,元素1之后的所有内容都是电话号码),利用“*”星号表达式分解可迭代对象后,使得开发者能够轻松利用这些模式,而无须在可迭代对象中做复杂操作就能得到相关的元素。
在Python程序中,星号表达式在迭代一个变长的元组序列时十分有用。下面的实例文件xinghao.py演示了分解一个带标记元组序列的过程。
records = [ ('AAA', 1, 2), ('BBB', 'hello'), ('CCC', 5, 3) ] def do_foo(x, y): print('AAA', x, y) def do_bar(s): print('BBB', s) for tag, *args in records: if tag == 'AAA': do_foo(*args) elif tag == 'BBB': do_bar(*args) line = 'guan:ijing234://wef:678d:guan' uname, *fields, homedir, sh = line.split(':') print(uname) print(homedir)
执行结果如图2-15所示。
图2-15 执行结果