2012-03-17 32 views
0

一定的規則,一個項目我想一個項目追加到list_b只有當它是一個上面'5H'這是'6H'我如何追加,只有當它符合蟒蛇

list_a = ('2A','4A','8H','6H') 
list_b = ['5H'] 

list_a.pop()給人因此一個'6H' 如果我append'6H'它應該能夠被添加到list_b,因爲它只是一個以上'5H'

我試圖比較第一個值,但它給出了一個錯誤,因爲下面的代碼中的1intlist_b[-1][0]str

if list_b[-1][0] + 1 != list_a.pop()[0]: 
    print('Error') 

所以我不能使用list_b[-1][0] + 1

回答

0

。假定list_a真的是一個列表,而不是一個元組,否則list_a.pop()將無法​​正常工作......

你需要做兩件事情:

(1)第一個字符轉換爲int,這樣就可以適當地對它們進行比較
(2)檢查第二個字符是相同的......從你的問題的描述,它會出現'6G''6I'(其中包括許多其他的)都不行

b_value = list_b[-1] 
a_value = list_a.pop() 

ok = int(b_value[0]) + 1 == int(a_value[0]) and b_value[1] == a_value[1] 
0

首先,你list_atuple,而不是一個列表。檢查括號。

如果

list_a = ['2A','4A','8H','6H'] 
list_b = ['5H'] 

,你可以這樣做:

while list_a: 
    t = list_a.pop() 
    if int(t[0]) == int(list_b[-1][0]) + 1: 
     list_b.append(t) 
    else: 
     print 'Error' 

處理的list_a元素反覆。

+0

我只需要比較由t引用的項目的第一個值[0] – Lycon 2012-03-17 21:40:15

+0

@Lycon我已經更新了相應的答案。 – 2012-03-17 21:43:05

+0

@Lycon:「我只需要比較t [0]引用的項目的第一個值是不明確的,並且可能與您的問題不一致。你應該更新你的問題,並舉例說明什麼是好的,什麼是不好的。請在更新您的問題之前閱讀我的答案。 – 2012-03-17 21:50:45

1

應該足夠使用int打開字符到它代表整數:

if int(list_b[-1][0]) + 1 != int(list_a.pop()[0]): 
    print('Error') 
0

使用列表理解:

list_b.extend([i for i in list_a if int(i[0]) == (int(list_b[-1][0]) + 1)]) 
+0

只是重讀這個問題。編輯。 – 2012-03-17 22:07:33