2011-12-10 13 views
14

संभव डुप्लिकेट:
How to initialize a two-dimensional array in Python?अधिक सुरुचिपूर्ण तरीका

मैं हमेशा इस तरह से कोड के इस हिस्से में लिखा है: हर बार जब मैं इसकी आवश्यकता है, मैं इस अजगर कोड का उपयोग करें:

for x in range(8): 
     a.append([]) 
     for y in range(8): 
      a[x].append(0) 

हालांकि, मैं वहाँ कोड के इस टुकड़े सुशोभित करने का कोई तरीका है पता करना चाहते हैं। मेरा मतलब है, आप पाइथन में बिडिमेंशनल मैट्रिक्स कैसे बनाते हैं, और इसे 0 से भरते हैं?

+0

इस समस्या को घोषित करने और आरंभ दो आयामी सरणी अच्छी तरह से समझाया गया है की है http://stackoverflow.com:

या और भी बेहतर, किसी दिए गए आकार की मैट्रिक्स लौटने के लिए एक सामान्य समारोह लिखने/प्रश्न/2397141/कैसे करने वाली प्रारंभ एक दो आयामी सरणी में अजगर) – gaurav

उत्तर

1

को eqivalent आप list comprehensions उपयोग कर सकते हैं। जब से तुम वास्तव में range द्वारा प्रदान मूल्यों के बारे में परवाह नहीं है, तो आप _ है, जो पारंपरिक है एक मूल्य है, जो एक में कोई दिलचस्पी नहीं है के लिए खड़ा है उपयोग कर सकते हैं।

>>> z = [[0 for _ in range(8)] for _ in range(8)] 
>>> import pprint 
>>> pprint.pprint(z) 
[[0, 0, 0, 0, 0, 0, 0, 0], 
[0, 0, 0, 0, 0, 0, 0, 0], 
[0, 0, 0, 0, 0, 0, 0, 0], 
[0, 0, 0, 0, 0, 0, 0, 0], 
[0, 0, 0, 0, 0, 0, 0, 0], 
[0, 0, 0, 0, 0, 0, 0, 0], 
[0, 0, 0, 0, 0, 0, 0, 0], 
[0, 0, 0, 0, 0, 0, 0, 0]] 

सूची comprehensions एक संक्षिप्त तरीके से प्रदान करते हैं मानचित्र(), फ़िल्टर() और/या लैम्ब्डा के उपयोग के बिना सूचियां बनाने के लिए। परिणामस्वरूप सूची परिभाषा अक्सर उन संरचनाओं का उपयोग करके बनाई गई सूचियों की तुलना में स्पष्ट होती है।

2

सूची समझ अधिक संक्षिप्त है।

a = [[0 for i in xrange(8)] for i in xrange(8)] 
print a 

या आप numpy arrays उपयोग कर सकते हैं अगर आप सरणी के साथ संख्यात्मक गणना करेंगे। Numpy.zeros फ़ंक्शन शून्य की एक बहु आयामी सरणी बनाता है।

import numpy as np 

a = np.zeros((8,8)) 
3

इस प्रयास करें:

a = [[0]*8 for _ in xrange(8)] 

यह सूची comprehensions और तथ्य यह है कि * ऑपरेटर उन्हें दिए गए तत्व की n प्रतियों के साथ भरने के लिए सूची में लागू किया जा सकता का उपयोग करता है। [यहां] (

# m: number of rows, n: number of columns 
def create_matrix(m, n): 
    return [[0]*n for _ in xrange(m)] 

a = create_matrix(8, 8) 
संबंधित मुद्दे