一個QuerySet返回一個列表:在Python列表匹配一個數以內的數
list1=[2856,28564,1245,232856]
當我試圖找到如果寫在上面的列表中存在一個號碼:
num=2856
if num in list1:
它匹配2856,25564和232856.我怎樣才能確保它只匹配2856而不是其他的?
對不起,我是Python新手,無法找到解決方案。道歉,如果我問一個重複的問題。
一個QuerySet返回一個列表:在Python列表匹配一個數以內的數
list1=[2856,28564,1245,232856]
當我試圖找到如果寫在上面的列表中存在一個號碼:
num=2856
if num in list1:
它匹配2856,25564和232856.我怎樣才能確保它只匹配2856而不是其他的?
對不起,我是Python新手,無法找到解決方案。道歉,如果我問一個重複的問題。
它並不像你的建議。事實上,你現在的語法給出你想要的輸出。
>>> 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]
您正在檢查num的值是否在列表中。因此,如果num等於list1的任何項目,則表達式爲
num in list1
爲真。爲了使只有真正當num是等於第一個(在這裏:2856),你必須寫:
num == list1[0]
爲您具體的例子:
[X在列表1 X如果x == 2856] [0]
返回一個單一的元素列表,只包含你想要的值,並且你訪問它的唯一位置來獲取元素。
_matches 2856,25564和232856_ - 不,它不,2856僅等於列表中的第一個元素。 –
最有可能的查詢集是字符串列表而不是整數列表...這就是爲什麼你有多個匹配。 –