2011-03-03 8 views
18

मेरे पास कोड का यह सरल टुकड़ा है जो शीर्षक में क्या देता है। सरणी बस प्रिंट क्यों नहीं करता है? यह सिर्फ itertools समस्या नहीं है, मैंने इसे अन्य कोड के लिए भी देखा है जहां यह ऑब्जेक्ट स्थान लौटाएगा।पाइथन 0x10049b470 पर <itertools.combations ऑब्जेक्ट लौट रहा है> '- मैं इसे कैसे एक्सेस कर सकता हूं?

यहां कोड है। मैं 2.7.1 चला रहा हूं, एक उत्साह वितरण (पिलैब) - कक्षा के लिए इसका उपयोग कर रहा हूं।

import itertools 

number = [53, 64, 68, 71, 77, 82, 85] 

print itertools.combinations(number, 4) 
+1

मैंने आपके प्रश्न को 'होमवर्क' के रूप में टैग किया है क्योंकि आपने 'कक्षा के लिए इसका उपयोग करके' उल्लेख किया है - मुझे बताएं कि क्या यह वास्तव में इस विशेष प्रश्न के लिए सच नहीं है। – phooji

उत्तर

26

यह एक साधारण सूची मुद्रित नहीं करता है क्योंकि लौटाया गया वस्तु एक सूची नहीं है। यदि आपको वास्तव में एक सूची की आवश्यकता है तो list फ़ंक्शन पर लागू करें।

print list(itertools.combinations(number, 4)) 

itertools.combinations पुनरावर्तक देता है। एक पुनरावर्तक ऐसा कुछ है जिसे आप for पर लागू कर सकते हैं। आम तौर पर, जैसे ही आप इसे प्राप्त करते हैं, एक इटरेटर के तत्वों की गणना की जाती है, इसलिए list के विपरीत, सभी सामग्री को स्मृति में कॉपी करने का कोई दंड नहीं है।

+0

क्या अगला तत्व प्राप्त करने के लिए .next() फ़ंक्शन की तरह है? लूप के लिए उपयोग किए बिना, मैं पूरी चीज़ को स्मृति – Curious

+0

@ क्रिएटिव हां में कॉपी नहीं करना चाहता हूं, 'अगला (सी)' कहां कॉल करें, जहां 'सी' संयोजन इटरेटर है। – kennytm

+0

धन्यवाद @ kennytm, क्या यह मानना ​​सही है कि मैं 10 वीं अनुक्रमणिका तक नहीं पहुंच सकता जब तक कि मैं 'अगली' 10 बार कॉल नहीं करता? – Curious

9

इस प्रयास करें:

for x in itertools.combinations(number, 4): 
    print x 

या कम:

results = [x for x in itertools.combinations(number, 4) ] 

असल में, itertools मॉड्यूल सभी कार्यों के इस प्रकार के ऑब्जेक्ट वापस जाएँ। विचार यह है कि, सामने के उत्तरों की एक सूची की गणना करने के बजाय, वे एक पुनरावृत्ति ऑब्जेक्ट लौटाते हैं जो उत्तर को गणना करने के लिए 'जानता है', लेकिन ऐसा नहीं करता जब तक कि 'पूछा नहीं जाता।' इस तरह, कंप्यूटिंग तत्वों के लिए कोई महत्वपूर्ण लागत नहीं है। this very good introduction to generators भी देखें।

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

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