乘以python中列表中的每秒数字

时间:2015-10-27 03:47:49

标签: python list

我试图获得数字'列表在0到100,000之间。然后我想要乘以列表的每个第二个数字。我不知道如何获得数字的第二位数。

def breakandSum():
  if 0<=x<100000:
      digits=(map(int,str(x)))
      return digits

2 个答案:

答案 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])