लोग। मैं किसी समस्या का सबसे सुंदर समाधान खोजने की कोशिश कर रहा हूं और सोच रहा हूं कि क्या पाइथन में कुछ भी है जो मैं करने की कोशिश कर रहा हूं।पायथन सूची की समझ; सूचियों की सूची को संपीड़ित करना?
मैं यह कर रहा हूं यह है। मेरे पास एक सूची है, A
, और मेरे पास एक कार्य f
है जो एक आइटम लेता है और एक सूची देता है। मैं A
में सबकुछ बदलने के लिए सूची समझ का उपयोग कर सकता हूं;
[f(a) for a in A]
लेकिन इस सूचियों की एक सूची प्रदान;
[a1,a2,a3] => [[b11,b12],[b21,b22],[b31,b32]]
जो मैं वास्तव में चाहता हूं वह फ़्लैटेड सूची प्राप्त करना है;
[b11,b12,b21,b22,b31,b32]
अब, अन्य भाषाओं में यह है; इसे परंपरागत रूप से कार्यात्मक प्रोग्रामिंग भाषाओं में flatmap
कहा जाता है, और .Net इसे SelectMany
कहते हैं। क्या पाइथन के समान कुछ है? क्या सूची में फ़ंक्शन को मैप करने और परिणाम को फ़्लैट करने का कोई साफ तरीका है?
वास्तविक समस्या जिसे मैं हल करने की कोशिश कर रहा हूं वह यह है; निर्देशिकाओं की एक सूची से शुरू, सभी उपनिर्देशिका खोजें। इसलिए;
import os
dirs = ["c:\\usr", "c:\\temp"]
subs = [os.listdir(d) for d in dirs]
print subs
currentliy मुझे एक सूची के- सूचियों देता है, लेकिन मैं वास्तव में एक सूची चाहते हैं।
हालांकि चालाक, समझना मुश्किल है और बहुत पठनीय नहीं है। –
वास्तव में पूछे गए प्रश्न का उत्तर नहीं देता है। पहली जगह में समस्या का सामना नहीं करने के लिए यह एक कामकाज है। क्या होगा यदि आपके पास पहले से ही सूचियों की एक सूची है। उदाहरण के लिए, यदि सूचियों की आपकी सूची मल्टीप्रोसेसिंग मॉड्यूल के मानचित्र फ़ंक्शन का परिणाम है तो क्या होगा? शायद itertools समाधान या कम समाधान सबसे अच्छा है। – Dave31415
डेव31415: '[सूची में आइटम के लिए सूची सूची में सूची के लिए आइटम]' – rampion