पर संख्याओं की एक सरणी बनाना, मैं अपने कुछ रसायन गृहकार्य के लिए कुछ त्वरित और गंदे स्क्रिप्ट पर काम कर रहा हूं, और उनमें से एक निरंतर लंबाई की सूचियों के माध्यम से पुनरावृत्त करता है जहां सभी तत्व योग होते हैं एक स्थिर निरंतर। प्रत्येक के लिए, मैं जांचता हूं कि क्या वे कुछ अतिरिक्त मानदंडों को पूरा करते हैं और उन्हें किसी अन्य सूची में ले जाते हैं।किसी दिए गए नंबर
मैं योग मानदंडों को पूरा करने के लिए एक तरीका खोज निकाला है, लेकिन यह खराब लग रहा है, और मैं क्या यहां पढ़ाने योग्य पल के कुछ प्रकार है यकीन है:
# iterate through all 11-element lists where the elements sum to 8.
for a in range(8+1):
for b in range(8-a+1):
for c in range(8-a-b+1):
for d in range(8-a-b-c+1):
for e in range(8-a-b-c-d+1):
for f in range(8-a-b-c-d-e+1):
for g in range(8-a-b-c-d-e-f+1):
for h in range(8-a-b-c-d-e-f-g+1):
for i in range(8-a-b-c-d-e-f-g-h+1):
for j in range(8-a-b-c-d-e-f-g-h-i+1):
k = 8-(a+b+c+d+e+f+g+h+i+j)
x = [a,b,c,d,e,f,g,h,i,j,k]
# see if x works for what I want
'[itertools.product में Vals के लिए Vals (रेंज (8), दोहराने = 11) यदि राशि (Vals) == 8]' अधिक सुंदर है, लेकिन ** ज्यादा ** अपने समाधान की तुलना में धीमी। – eumiro
+1 - आपके दोहराए जाने वाले रसायन शास्त्र गृहकार्य को स्वचालित करने के लिए कंप्यूटर का उपयोग करने के लिए प्रॉप्स। –
मेरी अंतर्दृष्टि यह है: 11 पूर्णांकों की सूची के लिए सभी 8 की तुलना में, संख्याओं में से बहुत सारे शून्य होने जा रहे हैं। ऐसा करने का एक तेज़ तरीका 8 से पूर्णांक को समेकित करने के सभी तरीकों को ढूंढना होगा - उदाहरण के लिए '8, 1 + 7, 2 + 6, 3 + 5, 4 + 4, 1 + 1 + 6, 1 + 2 + 5 ... 'और फिर बस उन शून्यों की उचित संख्या के साथ अनुमति दें। –