2012-05-15 23 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) 
相關問題