Python 同质数据的常量列表
如何定义一个常量的namedtuple列表?我希望在模块中定义类似的内容,并在我的代码中使用它。例如,当我只对成年人感兴趣时,我会在上面使用过滤器 但是,我不希望其他编码人员能够破坏这些数据,如果我使用列表,他们可以做到这一点。我意识到我可以使用元组,但我的理解是,事实上有一个标准,即元组用于异构数据,而我实际上拥有异构数据: 如果我正确理解了这篇文章Python 同质数据的常量列表,python,Python,如何定义一个常量的namedtuple列表?我希望在模块中定义类似的内容,并在我的代码中使用它。例如,当我只对成年人感兴趣时,我会在上面使用过滤器 但是,我不希望其他编码人员能够破坏这些数据,如果我使用列表,他们可以做到这一点。我意识到我可以使用元组,但我的理解是,事实上有一个标准,即元组用于异构数据,而我实际上拥有异构数据: 如果我正确理解了这篇文章 human_map = [ Activity(ADULT, EATING, OFTEN, 5), Activity(ADULT,
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但是这个博客在关于堆栈溢出的问题“列表和元组之间有什么区别”的顶部答案中提到了:但是对异构数据使用元组不是最好的做法吗