Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何将列表中的2位数字拆分为单个数字?_Python_Python 3.x_List_List Comprehension - Fatal编程技术网

Python 如何将列表中的2位数字拆分为单个数字?

Python 如何将列表中的2位数字拆分为单个数字?,python,python-3.x,list,list-comprehension,Python,Python 3.x,List,List Comprehension,所以我在学校里做了一个作业,给了我一系列的数字,结果基本上是找到可以除以因子数字的数字,f,并且包含“必须”的数字,m。因此,我在代码中使用了列表理解,我有一个列表,其中包含可以被f划分的范围内的所有数字。但是我需要关于如何制作一个列表的帮助,该列表只包含“必须”数字m def find_winner(f, m, n): a = [x for x in range(1, n+1) if x % f == 0] b = list(map(int, str(a[0])))

所以我在学校里做了一个作业,给了我一系列的数字,结果基本上是找到可以除以因子数字的数字,
f
,并且包含“必须”的数字,
m
。因此,我在代码中使用了列表理解,我有一个列表,其中包含可以被
f
划分的范围内的所有数字。但是我需要关于如何制作一个列表的帮助,该列表只包含“必须”数字
m

def find_winner(f, m, n):
     a = [x for x in range(1, n+1) if x % f == 0]
     b = list(map(int, str(a[0])))
     c = [z for z in b if z == str(m)]
     return len(c)

下面是一个相当简单的方法:

def find_solutions(numbers, factor, digit):
    solutions = 0
    for i in range(len(numbers)):
        if (numbers[i]%factor == 0 and str(digit) in str(numbers[i])):
            solutions += 1
    return solutions
如果您关心解决方案,那么您可以这样做:

def find_solutions(numbers, factor, digit):
    solutions = []
    for i in range(len(numbers)):
        if (numbers[i]%factor == 0 and str(digit) in str(numbers[i])):
            solutions.append(numbers[i])
    return solutions

请考虑一下这里发生了什么,而不是仅仅复制它,如果你有什么要说的,请随时回复。顺便说一句,为了清晰起见,我试着对变量进行适当的命名。

首先,如果您只想得到可被
f
整除的数,您不需要循环从0到
n
的所有数,而您可以使用
f
步骤进行循环

其次,如果要检查字符串中是否包含数字,可以使用字符串表示法

例如:

def find_winner(f, m, n):

    digit_string = str(m)

    if len(digit_string) != 1:
        raise ValueError('m must be a one-digit number')
    
    valid_numbers = [x for x in range(f, n+1, f) if digit_string in str(x)]
    
    return len(valid_numbers)

如果您尚未涵盖异常,您可能希望用
print
语句和类似
return None

的语句替换
raise…
行,您可以展示一个
f
m
n
的示例,期望的结果是什么以及您得到了什么吗?只是一点提示,虽然您可以理解您的代码,但使用一位数的变量名会让其他人难以推理。尽管存在一些常见的例外情况,如
i
n
,为了可读性而牺牲几行代码会有很大的帮助。是否要检查0-n中有多少个数字可以被数字f整除,并且其中有一个数字“m”?要检查字符串是否包含某个子字符串,可以在my_字符串中使用
子字符串
a=[x代表范围内的x(1,n+1),如果x%f==0]
如果x%f==0,那么只使用
列表(范围)呢(f,n+1,f))
?问题中函数的三个参数似乎都是整数。我不确定你的第一个参数(可能是一个列表)要包含什么。你的
数字是什么,使得
范围(数字)
数字[I]
您测试此功能时工作正常?我已对其进行了编辑,很抱歉出现了笨拙的错误。(我没有测试它)。