2016-07-28 48 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]

返回一个单一的元素列表,只包含你想要的值,并且你访问它的唯一位置来获取元素。

相关问题