किसी सूची में पुनरावृत्ति को परिवर्तित करने का सबसे तेज़ तरीका


184

एक होने iterator वस्तु , क्या कुछ तेजी से, बेहतर या सूची बोधक की तुलना में पुनरावृत्त होने वाली वस्तुओं की सूची प्राप्त करने के लिए अधिक सही है?

user_list = [user for user in user_iterator]

1
इसे अनुकूलित करने से पहले, सुनिश्चित करें कि आपने यह साबित करने के लिए कुछ रूपरेखा तैयार की है कि यह वास्तव में अड़चन है।
एस.लॉट

1
@ S.Lott। मैं आम तौर पर उस रवैये से सहमत हूं लेकिन, इस मामले में, इसे बहुत अधिक स्टाइलिस्टिक रूप से अनुकूलित किया जाना चाहिए, जैसा कि अक्सर पायथन के साथ होता है, यह गति के लिए भी अनुकूलित करेगा।
अरनॉस्टरलिंग

3
ओपी ने कहा कि अड़चन नहीं है। यह एक साधारण उत्तर के साथ एक पूरी तरह से सामान्य प्रश्न है, इसे किसी विशिष्ट एप्लिकेशन पर निर्भर करने की आवश्यकता नहीं है जिसे किसी प्रॉफ़ाइलर के माध्यम से चलाया जा सकता है।
केन विलियम्स

4
सबसे कॉम्पैक्ट तरीका है [*iterator]
चैलेंजर 5

जवाबों:


335
list(your_iterator)

5
दरअसल, लगभग हमेशा काफी तेज। इसके अलावा, बहुत अधिक स्पष्ट।
थॉमस वूटर

8
@systempuntoout यह पूरी तरह से सी में चलता है। सूची की समझ अजगर में है। बेशक यह तेजी से चलता है।
२०:२४ बजे

3
मुझे अब भी पूरी तरह से नफरत है कि अजगर में कोई बेहतर तरीका नहीं है। यह अभिव्यक्ति के दोनों किनारों को संपादित करने के लिए थकाऊ है, केवल इसे स्लाइस या इंडेक्स करने में सक्षम होने के लिए। (python3 में बहुत ही सामान्य, अगर यह एक शुद्ध अभिव्यक्ति है जैसे ज़िप, या शुद्ध फ़ंक्शन के साथ मानचित्र)
Jo So

हम्म। import matplotlib.pyplot as plt' followed by ax = plt.gca () `और list(ax._get_lines.prop_cycler)एक अनंत लूप में परिणाम। क्या इसे संभालने का एक सुंदर तरीका है?
जेन्स मुंक

5
मेरे तेज परीक्षण में, [*your_iterator]लगभग दोगुनी तेजी से दिखाई दिया list(your_iterator)। क्या यह आम तौर पर सच है, या यह सिर्फ एक विशिष्ट घटना थी? (मैं एक map
itter के

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.