如何在不检测具有相同数字的数字的情况下检查列表中的数字?

假设我有一个列表:[2 dogs play, 4 dogs play, 22 dogs play, 24 dogs play, 26 dogs play] 我有一个表达式要求用户输入一个数字,它存储在变量中,num


我的代码中有一个条件,


for item in list:

     if num in item:

        ....

        do something to item

我的问题是,如果用户输入 2,代码也会对有 22、24 和 26 的项目做一些事情,因为它有 2,当我只希望它对只有 2 的项目做一些事情时。我该如何实现?


繁花不似锦
浏览 169回答 3
3回答

翻阅古今

解决方案:将您的功能更改为:for item in list:    #  Since it's obvious you're checking a string for a number (in string form), you need     #  to make sure a space comes after the number (at the beginning of the string) in order    #  to avoid incomplete matches.    if item.startswith(num, beg=0, end=len(num)):        ...        func_do(item)结果:一个)['2 dogs play', '4 dogs play', '22 dogs play', '24 dogs play', '26 dogs play']num = '2' #  input with no space trailing使用这种方法的输出是 func_do('2 dogs play')乙)['2 dogs play', '4 dogs play', '22 dogs play', '24 dogs play', '26 dogs play']num = '2 ' #  input with space trailing (user hit spacebar and we didn't `trim()` the input)使用这种方法的输出仍然是 func_do('2 dogs play')谨防:清理您的输入,如果您使用到目前为止提供的任何其他方法(或任何检查输入后面空格的方法),您将必须警惕用户输入一个后面(或前面)有空格的数字。使用num = input().strip()或:num = input()num = num.strip()另外:这个答案显然也依赖于您尝试匹配的用户输入字符串,该item字符串位于您的list.

小唯快跑啊

你需要得到digits来自item然后检查它是否equal到num:使用正则表达式:import reuList = ['2 dogs play', '4 dogs play', '22 dogs play', '24 dogs play', '26 dogs play']num = int(input("Enter a num: "))for item in uList:      if num == int((re.findall(r'\d+', item))[0]):         print(item)输出:Enter a num: 22 dogs playProcess finished with exit code 0编辑:使用split():uList = ['2 dogs play', '4 dogs play', '22 dogs play', '24 dogs play', '26 dogs play']num = input("Enter a num: ")   # no conversion to int herefor item in uList:     if num == item.split(' ')[0]:  # split and get the digits before space         print(item)输出:Enter a num: 2222 dogs playProcess finished with exit code 0

函数式编程

我采用了拆分列表中的每个项目并查询第一个项目的超级简单方法。num = 2list = ['2 dogs play', '4 dogs play', '22 dogs play', '24 dogs play', '26 dogs play']for item in list:    number_of_dogs = int(item.split(' ')[0])    if number_of_dogs == num:        print('Doing something!')代码非常简单,仅当列表中的每个项目以数字开头,后跟一个空格时才有效。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python