मेरे पास एक मिश्रित सूची है, जिसमें टुपल्स (द्वितीय आयाम) वाली सूचियां हैं, जो इस तरह दिख रही हैं:

[[(0, 500), (755, 1800)], [2600, 2900], [4900, 9000], [(11000, 17200)]]

सूची इस तरह दिखनी चाहिए

[[0, 500], [755, 1800], [2600, 2900], [4900, 9000], [11000, 17200]]

मैंने इसे मानचित्र और कॉल टू लिस्ट() कन्वर्ट फ़ंक्शन के साथ आज़माया।

#Try 1: works for just the first element
experiment = map(list,cleanedSeg[0])
#Try 2: gives error int not interabel
experiment = [map(list,elem) for elem in cleanedSeg if isinstance(elem, (tuple, list))]
#Try 3: 
experiment = [list(x for x in xs) for xs in cleanedSeg]

print experiment

उनमें से किसी ने भी मेरी समस्या का समाधान नहीं किया

0
Björn 17 सितंबर 2018, 17:33

1 उत्तर

सबसे बढ़िया उत्तर
mixlist = [[(0, 500), (755, 1800)], [2600, 2900], [4900, 9000], [(11000, 17200)]]

# [[0, 500], [755, 1800], [2600, 2900], [4900, 9000], [11000, 17200]]
experiment = [list(n) if isinstance(n, tuple) else [n] for sub in mixlist for n in sub]

मैंने नीचे दी गई सूची समझ के दो संस्करणों की कोशिश की। उपरोक्त एक और दूसरा विकल्प जहां

experiment = [list(n) if isinstance(n, tuple) else list(n) for sub in mixlist for n in sub]

यह अभिव्यक्ति निम्न त्रुटि देता है:

TypeError: Argument of type 'int' is not iterable. 

इन दो अभिव्यक्तियों के बीच का अंतर सूची शाब्दिक, [] और सूची फ़ंक्शन, () का उपयोग कर रहा है।

list_literal = [n] # Gives a list literal [n]
ls = list(n) # Iterate over n's items and produce a list from that.

उदाहरण के लिए:

>>> n = (1,2,3)
>>> list_literal = [n]
>>> list_literal
[(1, 2, 3)]
>>> n = (1,2,3)
>>> list_literal = list(n)
>>> list_literal
[1, 2, 3]
1
shiro.asakura 18 सितंबर 2018, 13:11