一个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仅等于列表中的第一个元素。 –
最有可能的查询集是字符串列表而不是整数列表...这就是为什么你有多个匹配。 –