2012-05-15 77 views
1

我只是想计算字符串的某些元素(其索引值+ 1在N)的乘积。Pythonic这样做的方式? (乘以字符串中的某些元素)

这工作得很好:

start = 1 
end = 1000000 
N = (1, 10, 100, 1000, 10000, 100000, 1000000) 
product = 1 

concatenated_numbers_str = ''.join([str(x) for x in range(1, end + 1)]) 

for n in N: 
    product *= int(concatenated_numbers_str[n - 1]) 
print(product) 

但什么是更好的方式来做到这一点?

谢谢

+0

http://stackoverflow.com/questions/7948291/python-product-in-内置函数 – Pavel

+0

@Pavel请您详细说明如何使用'reduce()'来执行产品吗?要相乘的数字不能在单独的列表中一起使用。如何从'concatenated_numbers_str'列表中提取所需的整数,并使用'reduce()'将它们相乘? –

+0

'[int(concatenated_numbers_str [n])for n in N]' – Pavel

回答

0

我喜欢帕维尔的答案,但它应该是N-1而不是N:

import operator 
end = 1000000 
N = (1, 10, 100, 1000, 10000, 100000, 1000000) 
concatenated_numbers_str = ''.join([str(x) for x in range(1, end + 1)]) 
print reduce(operator.mul, [int(concatenated_numbers_str[n-1]) for n in N], 1) 
相关问题