我试图获得数字'列表在0到100,000之间。然后我想要乘以列表的每个第二个数字。我不知道如何获得数字的第二位数。
def breakandSum():
if 0<=x<100000:
digits=(map(int,str(x)))
return digits
答案 0 :(得分:1)
要从基数10的右边获取第二个数字,首先要将数字修改为100以截断前导数字,然后取整数结果并除以整数10以截断尾随数字。
这是一个快速示例,其中x = 4567,它从右边提取第二个基数10,或者#34;数字&#34;数字,即&#34; 6&#34;在这个例子中:
>>> x = 4567
>>> x = x % 100
>>> x = x / 10
>>> print x
6
如果你想把所有数字放在一个列表中,你可以只提取最右边的数字,将它附加到列表中,然后截断并继续循环,如下所示:
>>> x = 4567
>>> xdigit = []
>>> while x > 0:
... xdigit.append(x % 10)
... x = x / 10
...
>>> print xdigit
[7, 6, 5, 4]
>>>
然后,您可以使用列表推导和过滤器获取每个第二个数字:
>>> every_other_digit = [xdigit[i] for i in filter(lambda j: j % 2 == 0, range(len(xdigit)))]
>>> print every_other_digit
[7, 5]
如果您需要将这些数字相乘,您现在可以迭代此列表以获得最终产品:
>>> answer = 1
>>> for k in every_other_digit: answer *= k
...
>>> print answer
35
答案 1 :(得分:0)
有一种更简洁的方法:
digitSum = sum(x * 2 for x in list(map(int, str(num)))[::2])
地点:
str(num)
将 num
变成字符串
list(map(int, str(num)))
对于字符串中的每个元素,将其转回 int 并将其放入列表中
list(...)[::2]
表示列表中从最左边的元素开始的所有其他元素
x * 2 for x in list(...)[::2]
为列表中的每个元素乘以 2
sum(...)
添加迭代中的每个元素
编辑:抱歉,我以为你想将每一个乘以一个特定的数字,如果你想每一个相乘,你就去:
import math
digitSum = math.prod(x for x in list(map(int, str(num)))[::2])