2011-09-01 159 views
0

我最近纔開始用Python進行編程(與以前的Ruby經驗)。我試圖建立一個,如果條件有兩個條件:Python如果兩個條件依賴於一個元組的條件

if not previous[1] and previous[0][0] == 5: 
      print "hello world" 

不過,我不斷收到此錯誤:

<type 'exceptions.IndexError'>: tuple index out of range 

打印上的回報:((5, 1, 9, 23),)

我在做什麼錯?

我正在尋找類似他們的Ruby語法的東西:unless previous[1]

+1

您的'上一個'打印件有不匹配的圓括號。你有可能複製錯了嗎? – TorelTwiddler

+0

我做了,我只是改了它 – Spencer

+0

爲什麼在1元組內包裝一個元組? – delnan

回答

6

((5, 1, 9, 23),),那麼這是一個長度爲1的元組。它只是元素 - 索引爲0 - 是元組(5, 1, 9, 23)。它沒有第二個元素具有索引1,所以that_tuple[1]產生了IndexError

你希望previous[1]會給你什麼?

+0

所以如果我想測試前面[1]的存在,那麼正確的語法是什麼? – Spencer

+2

@Spencer,'如果len(previous)> 1'會測試,但我擔心這可能不是你需要處理的。你在檢查什麼? *您在編寫代碼時期望'以前的[1]'是什麼?*您最初是否試圖檢查存在? –

+0

在某些情況下,我期望它是另一個元組,在其他情況下,我希望它不存在。這個元組是從數據庫調用中返回的,我想用兩個返回的行處理實例,而不是返回一個行的實例。 – Spencer

0

previous」中只有一個元素。這就是爲什麼你得到一個IndexError當您嘗試檢索元素1.

+1

我將如何測試以前[1]的存在? – Spencer

+0

您可以使用len(previous)來確定之前的元素數量。 –

0

你的指數誤差從previous[1]未來 - 以前是1元組......你需要previous[0]previous[0][0]

+0

我將如何測試以前[1]的存在? – Spencer