Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 同质数据的常量列表_Python - Fatal编程技术网

Python 同质数据的常量列表

Python 同质数据的常量列表,python,Python,如何定义一个常量的namedtuple列表?我希望在模块中定义类似的内容,并在我的代码中使用它。例如,当我只对成年人感兴趣时,我会在上面使用过滤器 但是,我不希望其他编码人员能够破坏这些数据,如果我使用列表,他们可以做到这一点。我意识到我可以使用元组,但我的理解是,事实上有一个标准,即元组用于异构数据,而我实际上拥有异构数据: 如果我正确理解了这篇文章 human_map = [ Activity(ADULT, EATING, OFTEN, 5), Activity(ADULT,

如何定义一个常量的namedtuple列表?我希望在模块中定义类似的内容,并在我的代码中使用它。例如,当我只对成年人感兴趣时,我会在上面使用过滤器

但是,我不希望其他编码人员能够破坏这些数据,如果我使用列表,他们可以做到这一点。我意识到我可以使用元组,但我的理解是,事实上有一个标准,即元组用于异构数据,而我实际上拥有异构数据:

如果我正确理解了这篇文章

human_map = [
   Activity(ADULT, EATING, OFTEN, 5),
   Activity(ADULT, SLEEPING, PERIODIC, 24),
   Activity(BABY, CRYING, OFTEN, 1)]

列表和元组都适用于任意Python对象。您可以使用一个或另一个:唯一有用的区别是元组是不可变的

Python中只有3种类型的不可变序列:字符串、unicode和元组(在Python 2中),或字符串、元组和字节(在Python 3中)

因此,如果您需要一个不可变的对象列表,请使用元组


参考资料:

无论您使用哪种方法,几乎没有什么可以阻止开发人员将您的名字
human\u map
引用一个完全不同的不可变容器。例如:

human_map = (some, immutable, elements,)
然后恶意开发人员会执行以下操作:

import humans
humans.human_map = (something, else, entirely,)

在Python中,您只需要停止担心,稍微信任一下模块的客户机。如果人们想自食其果,就让他们自食其果。

列表和元组可以用于异构数据,但在Python中,将它们用于异构数据没有什么错


其他语言提供只能保存同质数据的基本集合(例如C/C++中的数组);更复杂的集合必须用于异构数据,在这些语言中,最佳做法是使用更高效的数组来处理异构数据,而不是产生更高级的集合类型的开销。但是这种逻辑并不适用于Python。

我不明白元组用于异构数据是什么意思,而我实际上有异构数据。你能解释一下吗?你可以用元组。元组的工作原理与列表基本相同,但无法更改。@khelwood我知道我可以使用元组,但我的印象是,元组中只有异构数据是标准做法:@Baz没有什么可以阻止您对同质数据使用它,而且它肯定经常以这种方式使用,不管博客怎么说。@khelwood但是这个博客在关于堆栈溢出的问题“列表和元组之间有什么区别”的顶部答案中提到了:但是对异构数据使用元组不是最好的做法吗