2016-07-28 52 views
-1

一個QuerySet返回一個列表:在Python列表匹配一個數以內的數

list1=[2856,28564,1245,232856] 

當我試圖找到如果寫在上面的列表中存在一個號碼:

num=2856 
if num in list1: 

它匹配2856,25564和232856.我怎樣才能確保它只匹配2856而不是其他的?

對不起,我是Python新手,無法找到解決方案。道歉,如果我問一個重複的問題。

+0

_matches 2856,25564和232856_ - 不,它不,2856僅等於列表中的第一個元素。 –

+0

最有可能的查詢集是字符串列表而不是整數列表...這就是爲什麼你有多個匹配。 –

回答

3

它並不像你的建議。事實上,你現在的語法給出你想要的輸出。

>>> list1=[2856,28564,1245,232856] 
>>> num=2856 
>>> if num in list1: 
...  print(num) 
... 
2856 
>>> 

這就是您建議的行爲。注意在這種情況下如何將整數轉換爲字符串。

>>> list1 = [2856,28564,1245,232856] 
>>> num = 2856 
>>> [x for x in list1 if str(num) in str(x)] 
[2856, 28564, 232856] 
-1

您正在檢查num的值是否在列表中。因此,如果num等於list1的任何項目,則表達式爲

num in list1 

爲真。爲了使只有真正當num是等於第一個(在這裏:2856),你必須寫:

num == list1[0] 
1

爲您具體的例子:

[X在列表1 X如果x == 2856] [0]

返回一個單一的元素列表,只包含你想要的值,並且你訪問它的唯一位置來獲取元素。

相關問題