3

我有一个像这样的变量:ignore = val1,val2

但我不清楚如何将这些值用作单独的值。

目前(据我所知)我需要像下面的代码一样对它们进行硬编码:

if (not Path.find("val1") > -1 ) and (not Path.find("val2") > -1 ):
    etc

现在我想添加测试,我需要像这样硬编码它:

if (not Path.find("val1") > -1 ) and (not Path.find("val2") > -1 ) and (not Path.find("test") > -1 ):

难道没有更好的方法来做到这一点吗?

4

3 回答 3

4

如果ignore是值名称的元组:

if all(Path.find(v) <= -1 for v in ignore):

这具有在第一个条件为假时立即停止的优点。就像您的硬编码示例一样。

于 2013-01-17T12:08:39.577 回答
3

这是tuplePython 中的基本数据类型之一。

您可以使用索引符号访问不同的值,例如ignore[0],ignore[1]等。

但是,如果您正在为这样的基本语言特性而苦苦挣扎,我强烈建议您在继续之前阅读 Python 教程。

于 2013-01-17T12:09:42.457 回答
0

ignore = var1, var2本质上分配ignore给一个元组,保存 和 的var1var2。要访问它们,请分别对第一个和第二个元素使用ignore[0]or ignore[1](在 Python 列表/元组索引中从 0 开始,而不是 1)。

除此之外,您还可以使用collections.namedtuple. 这允许您将元组视为具有属性的类:

import collections
sometuple = collections.namedtuple('sometuple', 'var1 var2')

然后,您可以按名称访问元素:

ignore = sometuple(var1, var2)
ignore.var1  # first element
ignore.var2  # second element

请参阅namedtuples 此处的文档。

有关一般信息tuples,请参阅文档

于 2013-01-17T12:17:52.277 回答