在python中执行以下操作的优雅方式是什么:
modes = (1,2,4,5,7,8,9)
start_modes = (1,2,5)
stop_modes = tuple(set(modes) - set(start_modes))
fast_modes = (2,7)
slow_modes = tuple(set(modes) - set(fast_modes))
我在定义我正在测试的系统的行为。在我的测试中,我有时会对遍历所有modes
感兴趣,有时我会对迭代{
我希望上面定义的所有变量都是不可变的,因为它们永远不会改变。我也希望他们的顺序总是一样的,因为我希望我的测试行为一致。在
改为使用sets:
这里
frozenset()
是set()
的等价物,tuple()
;一个不可变的类型。start_modes
和fast_modes
集使用{...}
集文本表示法,生成一个可变的set()
对象。您也可以始终使用frozenset()
。在集合只能包含唯一的元素,而不维护元素的顺序。您仍然可以将集合转换回元组,但对于您的问题,元组似乎是错误的数据类型。在
集合是可编辑的;您可以循环这些集合,但顺序取决于集合的插入和删除历史记录以及包含的值。在
如果order很重要,请在
^{pr2}$tuple()
调用中使用生成器表达式来生成值:虽然在这里没有多大区别,但是如果您可以使}对象,
start_modes
和fast_modes
set
或{not in
负成员身份测试会更快。在使用集合:
相关问题 更多 >
编程相关推荐