2012-07-05 13 views
39

यहां मेरा कोड है, मुझे सूची में तत्वों की एक अनिर्धारित संख्या को जोड़ना होगा। यह कैसे करना है?सूची में तत्वों को सारांशित करना

l = raw_input() 
l = l.split(' ') 
l.pop(0) 

मेरे इनपुट: 3 5 4 9 इनपुट बाद मैं l.pop(0) के माध्यम से पहला तत्व को हटा दें। .split(' ') के बाद मेरी सूची ['5', '4', '9'] है और मुझे इस सूची में सभी तत्वों को योग करने की आवश्यकता है।

इस मामले में राशि 18 है। कृपया ध्यान दें कि तत्वों की संख्या परिभाषित नहीं की गई है।

+2

'l.pop (0)' क्यों? –

+0

आपका इनपुट क्या है? –

+0

@JakobBowyer मुझे पहली प्रविष्टि को हटाने की आवश्यकता है – treng

उत्तर

103

आप बस sum() में निर्मित के साथ सूची में संख्या जोड़ सकते हैं:

sum(your_list) 

यह आप के रूप में कई संख्या आइटम योग होगा। उदाहरण:

my_list = range(10, 17) 
my_list 
[10, 11, 12, 13, 14, 15, 16] 

sum(my_list) 
91 

अपने विशिष्ट मामले के लिए:

अपने डेटा के लिए int पहले और उसके बाद योग संख्या में संख्या बदलती है:

data = ['5', '4', '9'] 

sum(int(i) for i in data) 
18 

यह अपरिभाषित संख्या के लिए काम करेंगे आपकी सूची में तत्वों के (जब तक वे "संख्याएं" हैं)

डेटा प्रेषण प्रारूप में होने पर @ प्रेषक की टिप्पणी पुनः रूपांतरण के लिए धन्यवाद।

+0

का उपयोग किया, समाधान के लिए धन्यवाद, पूर्णांक में परिवर्तन सहित, मेरे लिए यह केवल तभी काम करता है जब मैं डेटा के लिए int (i) के आसपास ब्रैकेट [] डालता हूं। क्या यह सामान्य है? – Aki

4

पायथन इटरेबल को [sum(range(10)[1:])] जैसे समझा जा सकता है। यह पहले तत्व को छोड़कर सूची के सभी तत्वों को बताता है।

>>> atuple = (1,2,3,4,5) 
>>> sum(atuple) 
15 
>>> alist = [1,2,3,4,5] 
>>> sum(alist) 
15 
2

आप sum उपयोग कर सकते हैं एक सूची के तत्वों योग करने के लिए, लेकिन यदि आपकी सूची raw_input से आ रही है, तो आप शायद करने के लिए int या float पहले आइटम परिवर्तित करना चाहते हैं:

l = raw_input().split(' ') 
sum(map(int, l)) 
6
>>> l = raw_input() 
1 2 3 4 5 6 7 8 9 10 
>>> l = l.split() 
>>> l.pop(0) 
'1' 
>>> sum(map(int, l)) #or simply sum(int(x) for x in l) , you've to convert the elements to integer first, before applying sum() 
54 
1

आप map फ़ंक्शन और पायथन इनबिल्ट sum() फ़ंक्शन का उपयोग कर सकते हैं। यह समाधान को सरल बनाता है। और जटिलता को कम करता है।
a=map(int,raw_input().split())
sum(a)
हो गया!

संबंधित मुद्दे