2011-09-05 19 views
6

मैं कॉन्फ़िगरेशन फ़ाइल से टाइलमैप मानचित्र को पार्स करने के लिए कोड लिख रहा हूं। नक्शा प्रारूप में है:मैं संक्षेप में नेस्टेड सूचियों को कैसे स्थानांतरित करूं?

1|2|3|4 
1|2|3|4 
2|3|4|5 

जहां संख्याएं टाइल्स का प्रतिनिधित्व करती हैं। मैं तो एक पूर्णांक सरणी में इस करते हैं:

[[int(tile) for tile in row.split("|")] for row in "1|2|3|4\n1|2|3|4\n2|3|4|5".lstrip("\n").split("\n")] 

इस प्रारूप [पंक्ति] [स्तंभ] में एक सरणी पैदा करता है, लेकिन मैं इसे होने के लिए पसंद करेंगे [स्तंभ] [पंक्ति] के रूप में [x] [ y] तो मुझे इसे पीछे की ओर संबोधित नहीं करना होगा (यानी [y] [x])। लेकिन मैं समस्या पर हमला करने के किसी भी संक्षिप्त तरीके के बारे में नहीं सोच सकता। मैंने टाइल के माध्यम से एक्सएमएल सिंटैक्स का उपयोग करके प्रारूप को फिर से काम करने पर विचार किया है, लेकिन शुरुआत के लिए यह बहुत मुश्किल लगता है।

किसी भी प्रतिक्रिया के लिए अग्रिम धन्यवाद।

+0

की [अजगर में मैट्रिक्स पक्षांतरित] (http://stackoverflow.com/questions/4937491/matrix-transpose-in-python) – ChillarAnand

उत्तर

26

उपयोग mylist = zip(*mylist):

>>> original = [[1, 2, 3, 4], [1, 2, 3, 4], [2, 3, 4, 5]] 
>>> transposed = zip(*original) 
>>> transposed 
    [(1, 1, 2), (2, 2, 3), (3, 3, 4), (4, 4, 5)] 

>>> original[2][3] 
    5 

>>> transposed[3][2] 
    5 

यह कैसे काम करता: zip(*original)zip(original[0], original[1], original[2]) के बराबर है। जो बदले में बराबर है: ज़िप ([1, 2, 3, 4], [1, 2, 3, 4], [2, 3, 4, 5])।

+0

संभव डुप्लिकेट यह कर की रूपरेखा आश्चर्यजनक रूप कारगर तरीका है कि! धन्यवाद! – zzz

0
def listTranspose(x): 
    """ Interpret list of lists as a matrix and transpose """ 
    tups = zip(*x) 
    return [ list(t) for t in tups ] 
संबंधित मुद्दे