अद्यतन : विस्तार का उपयोग किए बिना समतल लेकिन बिना समझ के और सूची के रूप में उपयोग किए बिना (सबसे तेज़)
इसके बाद अगले उत्तर की जाँच करने के बाद, जो कि dual for
मैंने थोड़ा ट्वीक किया था, और अब बेहतर प्रदर्शन करता है, सूची के माध्यम से तेजी से समाधान प्रदान किया है, पहले सूची का निष्पादन (...) समय का एक बड़ा प्रतिशत खींच रहा था, फिर एक सूची बदल रहा है एक साधारण लूप के लिए समझ थोड़ी और अधिक मुंडा।
नया समाधान है:
l = []
for row in output: l.extend(row)
पुराना:
नक्शा / विस्तार के साथ चपटा:
l = []
list(map(l.extend, output))
नक्शे के बजाय सूची की समझ के साथ चपटा होना
l = []
list(l.extend(row) for row in output)
नए विस्तार के लिए कुछ समय और सुधार केवल [...] के लिए सूची (...) को हटाकर:
import timeit
t = timeit.timeit
o = "output=list(zip(range(1000000000), range(10000000))); l=[]"
steps_ext = "for row in output: l.extend(row)"
steps_ext_old = "list(l.extend(row) for row in output)"
steps_ext_remove_list = "[l.extend(row) for row in output]"
steps_com = "[item for sublist in output for item in sublist]"
print("new extend: ", t(steps_ext, setup=o, number=10))
print("old extend w []: ", t(steps_ext_remove_list, setup=o, number=10))
print("comprehension: ", t(steps_com, setup=o, number=10,))
print("old extend: ", t(steps_ext_old, setup=o, number=10))
>>> new extend: 4.502427191007882
>>> old extend w []: 5.281140706967562
>>> comprehension: 5.54302118299529
>>> old extend: 6.840151469223201
[(12.2817, 12.2817), (0, 0), (8.52, 8.52)]
पहले से ही एक 3x2 मैट्रिक्स है?! या किसी को याद किया था ?