2013-01-17 87 views
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): 

難道還有更好的方法嗎?

+0

你能否提供關於'Path'和Path.find是什麼的更多細節? – georg

回答

4

如果ignore是值名稱的元組:

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

這樣做的好處是首要條件是假儘快停止。就像你的硬編碼的例子。

+1

+1,但我更喜歡'如果所有(Path.find(v)<= -1 for v in ignore)'。 –

+0

@TimPietzcker - 我也喜歡。 – eumiro

+0

感謝您的幫助。在閱讀元組幾個小時後,我明白了這個過程。我不明白的是,當我有這樣的元組忽略= val1,val2它不匹配任何值,但是當我使它像這樣ignore = val1它的作品完美。出於某種原因,我無法在此元組中獲得多個值。我想我需要多讀一點。 – user1987032

3

這是一個tuple,它是Python中的基本數據類型之一。

可以使用索引符號,像ignore[0]ignore[1]訪問不同的值等

但是,如果你有基本的語言特性,這樣的掙扎,我強烈建議你去閱讀一個Python繼續之前的教程。

+0

'any/all'可以在教程中找到。但人們必須在這裏使用它們。 – eumiro

0

ignore = var1, var2實質上將ignore賦值給一個元組,保存值爲var1var2。要訪問它們,請分別使用ignore[0]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 

查看文檔namedtupleshere

有關tuples的一般信息,請參見the documentation