《Python Cookbook(第3版)中文版》——第1章 数据结构和算法 1.1 将序列分解为单独的变量

第1章 数据结构和算法

Python内置了许多非常有用的数据结构,比如列表(list)、集合(set)以及字典(dictionary)。就绝大部分情况而言,我们可以直接使用这些数据结构。但是,通常我们还需要考虑比如搜索、排序、排列以及筛选等这一类常见的问题。因此,本章的目的就是来讨论常见的数据结构和同数据有关的算法。此外,在collections模块中也包含了针对各种数据结构的解决方案。

1.1 将序列分解为单独的变量

1.1.1 问题

我们有一个包含 N 个元素的元组或序列,现在想将它分解为N个单独的变量。

1.1.2 解决方案

任何序列(或可迭代的对象)都可以通过一个简单的赋值操作来分解为单独的变量。唯一的要求是变量的总数和结构要与序列相吻合。例如:

>>> p = (4, 5)
>>> x, y = p
>>> x
4
>>> y
5
>>>

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

如果元素的数量不匹配,将得到一个错误提示。例如:

>>> p = (4, 5)
>>> x, y, z = p
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: need more than 2 values to unpack
>>>

1.1.3 讨论

实际上不仅仅只是元组或列表,只要对象恰好是可迭代的,那么就可以执行分解操作。这包括字符串、文件、迭代器以及生成器。比如:

>>> s = 'Hello'
>>> a, b, c, d, e = s
>>> a
'H'
>>> b
'e'
>>> e
'o'
>>>

当做分解操作时,有时候可能想丢弃某些特定的值。Python并没有提供特殊的语法来实现这一点,但是通常可以选一个用不到的变量名,以此来作为要丢弃的值的名称。例如:

>>> data = [ 'ACME', 50, 91.1, (2012, 12, 21) ]
>>> _, shares, price, _ = data
>>> shares
50
>>> price
91.1
>>>

但是请确保选择的变量名没有在其他地方用到过。

时间: 2024-12-22 07:36:54

《Python Cookbook(第3版)中文版》——第1章 数据结构和算法 1.1 将序列分解为单独的变量的相关文章

求大神解答一下-C++ primer plus 第6版 中文版 第16章复习题的一个问题

问题描述 C++ primer plus 第6版 中文版 第16章复习题的一个问题 奇葩的是课后居然没答案...... 求正规.严谨.简洁的标准答案! 程序清单16.15(在p708页):functor.cpp //functor.cpp--using a functor #include尖括号iostream尖括号 #include尖括号list尖括号 #include尖括号iterator尖括号 #include尖括号algorithm尖括号 template//functor class

《Python Cookbook(第3版)中文版》——导读

前 言 自2008年以来,我们已经目睹了整个Python世界正缓慢向着Python 3进化的事实.众所周知,完全接纳Python 3要花很长的时间.事实上,就在写作本书时(2013年),大多数Python程序员仍然坚持在生产环境中使用Python 2.关于Python 3不能向后兼容的事实也已经做了许多努力来补救.的确,向后兼容性对于任何已经存在的代码库来说是个问题.但是,如果你着眼于未来,你会发现Python 3带来的好处绝非那么简单. 正因为Python 3是着眼于未来的,本书在之前的版本上

谁有&amp;amp;lt;&amp;amp;lt;CLR Via C#&amp;amp;gt;&amp;amp;gt;第三版中文版的电子书

问题描述 谁有<<CLRViaC#>>第三版中文版的电子书,我是个初学者,看网上推荐此书的人多,想看一下,我的QQ:330784617.谢谢!! 解决方案 解决方案二:试一试我一般看英文的,虽然很少看书:(解决方案三: 解决方案四:第二版有的,想看第三版.

拒绝从入门到放弃_《Python 核心编程 (第二版)》必读目录

目录 目录 关于这本书 必看知识点 最后 关于这本书 <Python 核心编程 (第二版)>是一本 Python 编程的入门书,分为 Python 核心(其实并不核心,应该叫基础) 和 高级主题 两大部分,以 Python 2.x 作为主要演示版本,涵盖的知识面广,知识点较齐全,代码多且好理解,但对 Python 版本特性的内容太久远,不合时宜. 整体来说 Python 核心 部分是主要内容,高级主题 部分作为应用扩展内容.后半部分篇幅较短,内容不够深入,只到了解的层面,好在横向够广(每一个主

(六十二)第四章总结——《C++ Primer Plus 第6版 中文版》

书是<C++ Primer Plus  第6版  中文版> 数组.指针.结构 是C++的3种复合类型.   注:为了方便,类型名用int为主,变量名用a为主.   数组: 包括数组(例如int a[10];)和字符串(例如char a[10];),还有string类(例如string a="abc";),vector类(例如vector<int>a(5)).array类(array<int,3>a)等. 数组名表示数组所在的(第一个元素)内存地址.

【转】c++.primer.plus.第五版.中文版[下载]

c++.primer.plus.第五版.中文版[下载] 一共有5部分.全部下载完才可解压阅读. c++.primer.plus.第五版.中文版(一) c++.primer.plus.第五版.中文版(二) c++.primer.plus.第五版.中文版(三) c++.primer.plus.第五版.中文版(四) c++.primer.plus.第五版.中文版(五) "在遇到无法解决的问题时,我总会求助于C++ Primer一书."--Bruce Eckel,"编程思想"

《“笨办法”学Python(第3版)》——习题4 变量和命名

习题4 变量和命名 你已经学会了print和算术运算.下一步要学的是"变量"(variable).在编程中,变量只不过是用来指代某个东西的名字.程序员通过使用变量名可以让他们的程序读起来更像自然语言.而且因为程序员的记性都不怎么好,变量名可以让他们更容易记住程序的内容.如果他们没有在写程序时使用好的变量名,在下一次读到原来写的代码时他们会大为头疼的. 如果被这个习题难住了的话,想想之前教过的,要注意找到不同点.关注细节. 1.在每一行的上面写一行注释,给自己解释一下这一行的作用. 2.

《像计算机科学家一样思考Python(第2版)》——2.2 变量名称

2.2 变量名称 程序员常常选择有意义的名称作为变量名-以此标记变量的用途. 变量名可以任意长短.它可以包含字母和数字,但必须以一个字母开头.使用大写字母是合法的,但变量名使用小写字母开头是个好主意(后面你会看到为何如此). 下划线"_"可以出现在变量名称中.它经常出现在由多个词组成的变量名中,如your_name或airspeed_of_unladen_swallow. 如果给变量取非法的名称,会得到一个语法错误: >>> 76trombones = 'big pa

《“笨办法”学Python(第3版)》——习题6 字符串和文本

习题6 字符串和文本 虽然你已经在程序中写过字符串了,但是你还不了解它们的用处.在这个习题中我们将使用复杂的字符串来建立一系列变量,从中你将学到它们的用途.首先,我们解释一下字符串是什么. 字符串通常是指你想要展示给别人的或者是想要从程序里"导出"的一小段字符.Python可以通过文本里的双引号(")或者单引号(')识别出字符串来.这在以前的打印练习中你已经见过很多次了.如果你把单引号或者双引号括起来的文本放到print后面,它们就会被Python打印出来. 字符串可以包含之