栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

添加号码进行设置

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

添加号码进行设置

Python中的一个约定是变异序列的方法返回

None

考虑:

>>> a_list = [3, 2, 1]>>> print a_list.sort()None>>> a_list[1, 2, 3]>>> a_dict = {}>>> print a_dict.__setitem__('a', 1)None>>> a_dict{'a': 1}>>> a_set = set()>>> print a_set.add(1)None>>> a_setset([1])

某些人可能会认为此约定是“ Python中的可怕错误设计”,但是“设计和历史记录”
FAQ给出了此设计决定背后的原因(相对于列表):

为什么不

list.sort(
)返回排序列表?

在性能很重要的情况下,仅对列表进行排序会造成浪费。因此,

list.sort()
将列表排序到位。为了提醒您这一事实,它不会返回已排序的列表。这样,当您需要已排序的副本但还需要保留未排序的版本时,您不会被愚蠢地误覆盖列表。

在Python 2.4中,添加了一个新的内置函数–

sorted()
。此函数根据提供的可迭代对象创建一个新列表,对其进行排序并返回。

您对该功能的特殊问题来自对创建集合的好方法的误解,而不是语言设计错误。正如Lattyware指出的那样,在Python
2.7及更高版本中,您可以使用set常量

a = {1}
a = set([1])
按照Sven
Marnach的答案进行操作。
该add()方法将元素添加到集合中,但不会再次返回集合-它返回None。

a = set()a.add(1)

或更好

a = set([1])

会工作。

顺便说一句,我喜欢Ruby的约定,即在使对象变异的方法之后放置一个感叹号,但我发现Python的方法可以接受。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/639029.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号