Python | 2B Dizileri Kullanma / Doğru Yolu Listeleme

| | | | | |

Yöntem 1a


# 1 D dizisi oluşturmanın ilk yolu

N = 5

arr = [ 0 ] * N

yazdır (dizi)

Çıktı:

[0, 0, 0, 0, 0] 

Yöntem 1b

# Dizi 1 D

N = oluşturmanın ikinci yolu 5

arr = [ 0 için i in aralık (N)]

yazdır (dizi)

Çıkış:

[0, 0, 0, 0, 0 ] 

Yukarıdakileri genişleterek 2 boyutlu diziler tanımlayabiliriz. aşağıdaki yollarla.
Yöntem 2a


#
# 2B dizi

satırlar, sütunlar = ( 5 , 5 )

dizi = [[ 0 ] * cols] * satır

print (arr)

Çıkış:

[[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]] 

Yöntem 2b


# Yukarıdaki ikinci yöntemi kullanarak
# 2D dizi

satırları oluşturun, sütunlar = ( 5 , 5 )

arr = [[ 0 için i in aralık (sütunlar)] için j aralığında (satırlar)]

yazdır (dizi)

Çıktı:

[[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]] 

Her iki yöntem de şimdikiyle aynı sonucu veriyor gibi görünüyor. Yöntem 2a ve yöntem 2b dizisindeki öğelerden birini değiştirelim.


# Nasıl çalıştığını göstermek için Python 3 programı
# yöntem 1 ve yöntem 2.

satırlar, sütunlar = ( 5 , 5 )


# method 2a

arr = [[ 0 ] * sütunlar] * satır


# ilkini değiştir eleman
# ilk satırdan 1`e ve diziyi yazdırın

arr [ 0 ] [ 0 ] = 1

için satır dizi:

yazdır (satır)

# aşağıdaki çıktıyı verir
# [1, 0, 0, 0, 0]
# [1, 0, 0, 0, 0]
# [1, 0, 0, 0, 0]
# [1, 0, 0, 0, 0]
# [1, 0, 0, 0, 0]


# yöntem 2b

arr = [[ 0 for i aralık (sütunlar)] için j aralığında (satırlar)]


# bu yeni diziye geri dönmenizi sağlar
# ilk satırın ilk öğesini
#`den 1`e ve diziyi yazdırın

arr [ 0 ] [ 0 ] < kod sınıfı = "anahtar kelime"> = 1

için satır in arr:

yazdır (satır)






"comments"> #, beklendiği gibi aşağıdaki çıktıyı verir
# [1, 0, 0, 0, 0]
# [0, 0, 0, 0, 0]
# [0, 0, 0, 0, 0]
# [0, 0, 0, 0, 0]
# [0, 0, 0, 0, 0]

Çıkış:

[1, 0, 0, 0, 0] [1, 0, 0, 0, 0] [1 , 0, 0 , 0, 0] [1, 0, 0, 0, 0] [1, 0, 0, 0, 0] [1, 0, 0, 0, 0] [0, 0, 0, 0 , 0] [ 0, 0, 0, 0, 0] [0, 0, 0, 0, 0] [0, 0, 0, 0, 0] 

Sadece ilk elemanı bekliyoruz ilk satır 1 olarak değişecek, ancak her satırın ilk öğesi yöntem 2a`da 1 olarak değişecektir. Bu tür bir işleyiş, Python`un anlamaya çalışacağımız sığ listeler kullanması gerçeğinden kaynaklanmaktadır.

Yöntem 1a`da Python, 5 tamsayı nesnesi oluşturmaz, yalnızca bir tamsayı nesnesi oluşturur ve tümü arr dizisinin dizinleri, gösterildiği gibi aynı an int nesnesine işaret eder.


0. dizini başka bir tamsayıya, örneğin 1`e atarsak, 1 değeriyle yeni bir tamsayı nesnesi oluşturulur ve ardından 0. dizin şimdi aşağıda gösterildiği gibi bu yeni int nesnesini gösterir

Aynı şekilde," arr = [[0] * cols] * row " gibi iki boyutlu bir dizi oluşturduğumuzda , biz aslında yukarıdaki benzetmeyi genişletiyoruz.
1. Yalnızca bir tamsayı nesnesi oluşturulur.
2. Bir 1d listesi oluşturulur ve tüm endeksleri 1. noktada aynı int nesnesine işaret eder.
3. Şimdi arr [0], arr [1], arr [2]‚Ķ. arr [n-1] tümü 2. adımda yukarıdaki aynı liste nesnesine işaret eder.

Yukarıdaki ayar aşağıdaki resimde görselleştirilebilir.

Şimdi ilk satırdaki ilk öğeyi" arr "olarak değiştirelim
arr [0] [0] = 1

=" arr [0], yukarıda oluşturduğumuz aynı liste nesnesine işaret eder (arr [1], arr [2]‚Ķ arr [n-1]`in de aynı liste nesnesine işaret ettiğini unutmayın)
= & gt ; arr [0] [0] atamak, 1 değerinde yeni bir int nesnesi yaratacak ve arr [0] [0] şimdi bu yeni int nesnesini gösterecek. (Ve böylece arr [1] [0], arr [2] [0]‚Ķ arr [n-1] [0] olacaktır)

Bu, aşağıdaki resimde açıkça görülebilir .


Yani 2d diziler bu şekilde oluşturulduğunda, değişen Belirli bir satırdaki ‚Äã‚Äã değerleri tüm dizeleri etkiler, çünkü temelde yalnızca bir tamsayı nesnesi ve dizideki tüm satırlar tarafından başvurulan yalnızca bir liste nesnesi vardır.

Beklediğiniz gibi, izini sürün. sığ listelerin bu kullanımından kaynaklanan hatalar. karmaşık. Dolayısıyla bir 2d diziyi bildirmenin en iyi yolu


rows, cols = ( 5 , 5 )

dizi = [[ 0 for i aralığında (sütunlar)] j aralığında (rows )]

Çıkış:

 

Bu yöntem, Yöntem 2a`nın aksine 5 ayrı liste nesnesi. Bunu kontrol etmenin bir yolu — iki işlenenin aynı nesneye başvurup göndermediğini kontrol eden "is" operatörünü kullanın.


satırlar, sütunlar = ( 5 , 5 )

# method 2b

arr = [[ 0 için i in aralığı ( cols)] for j içinde aralık (satırlar)]


# arr [0] ve arr [1]`in
# aynı nesneye atıfta bulunup bulunmadığını kontrol edin

yazdır (dizi [ 0 ] is arr [ 1 ] ) # prints False


# method 2a

arr = [[ 0 ] * sütun] * satırlar


# arr [0] ve arr [1]`in
ile ilgili olup olmadığını kontrol edin # bu sam e nesne
# prints True çünkü yalnızca bir tane
oluşturulacak nesne listesi var.

print (dizi [ 0 ] is arr [ 1 ])

Çıkış:

Yanlış Doğru 

Python | 2B Dizileri Kullanma / Doğru Yolu Listeleme Arrays: Questions

Python | 2B Dizileri Kullanma / Doğru Yolu Listeleme exp: Questions

Shop

Best Python online courses for 2022

$

Best laptop for Fortnite

$

Best laptop for Excel

$

Best laptop for Solidworks

$

Best laptop for Roblox

$

Best computer for crypto mining

$

Best laptop for Sims 4

$

Best laptop for Zoom

$499

Latest questions

NUMPYNUMPY

psycopg2: insert multiple rows with one query

12 answers

NUMPYNUMPY

How to convert Nonetype to int or string?

12 answers

NUMPYNUMPY

How to specify multiple return types using type-hints

12 answers

NUMPYNUMPY

Javascript Error: IPython is not defined in JupyterLab

12 answers

Wiki

Python OpenCV | cv2.putText () method

numpy.arctan2 () in Python

Python | os.path.realpath () method

Python OpenCV | cv2.circle () method

Python OpenCV cv2.cvtColor () method

Python - Move item to the end of the list

time.perf_counter () function in Python

Check if one list is a subset of another in Python

Python os.path.join () method