उदाहरण के लिए, पाइथन में फ़ाइलें, पुनरावृत्त हैं - वे फ़ाइल में लाइनों पर फिर से चलती हैं। मैं लाइनों की संख्या गिनना चाहता हूँ।क्या अजगर में एक पुनरावृत्त की लंबाई प्राप्त करने के लिए कोई अंतर्निहित तरीका है?
एक त्वरित तरीका यह है है:
lines = len(list(open(fname)))
बहरहाल, यह स्मृति में पूरे फाइल लोड (एक ही बार में)। यह एक पुनरावर्तक के उद्देश्य को हरा देता है (जिसे केवल वर्तमान पंक्ति को स्मृति में रखना आवश्यक है)।
यह काम नहीं करता:
lines = len(line for line in open(fname))
के रूप में जनरेटर लंबाई जरूरत नहीं है।
क्या कोई गिनती फ़ंक्शन परिभाषित करने के लिए ऐसा करने का कोई तरीका है?
def count(i):
c = 0
for el in i: c += 1
return c
संपादित करें: स्पष्ट करने के लिए, मैं समझता हूँ कि पूरे फ़ाइल को पढ़ने करना होगा! मैं बस इसे स्मृति में एक बार में नहीं चाहता =)।
लाइनों की संख्या को गिनने के लिए आप स्मृति में फ़ाइल को लोड करेंगे! – hasen
सूचियां (सभी अनुक्रम प्रकार) भी पुनरावृत्त हैं।आपका मतलब क्या है "इटरेटर" – hop
@ हसन: हाँ, लेकिन सभी एक बार में नहीं। – Claudiu