Listenin Elemanlarına Başka Bir Listedeki İndexlerden Ulaşma

Örneğin elimizde iki boyutlu table listesi var. Bu listenin elemanlarına table[y][x] diyerek ulaşabiliyoruz.

Elimizde içerisinde sıralı y ve x koordinatları olan coordinates adında başka bir liste daha olduğunu varsayalım.

Şimdi ben coordinates içindekilerle table da indexlere ulaşmak istediğimde

table[coordinates[0]][coordinates[1]]

diyerek ulaşabiliyorum ama bunun daha kısa bir yolu yok mudur?

table[*coordinates]

Bunun işe yaramadığını biliyorum ama bunun gibi birşey ile kolayca erişemez miyim?

table ve coordinates için örnek listeler verebilir misiniz?

Aslında değerler çok önemli değil ama bir örnek veriyim:

table = [
    ["B", "5", "2"], 
    ["2", "G", "?"], 
    ["D", "1", "4"], 
]
coordinates = [2, 0]

Yanlış yazdınız galiba?

>>> table = [
    ["B", "5", "2"], 
    ["2", "G", "?"], 
    ["D", "1", "4"], 
]
>>> table[1,2]
Traceback (most recent call last):
  File "<pyshell#11>", line 1, in <module>
    table[1,2]
TypeError: list indices must be integers or slices, not tuple

Pardon düzelttim orasını.

table[coordinates[0]][coordinates[1]]

Bunun daha kısa bir yolu yok mu. Ne zaman bir yerde tekrara düşsem kısa yolunu arıyorum da.

Kod tekrarını engellemek için normalde yapılan şeyi yapıp bir fonksiyon oluşturabilirsiniz, gerçi yazdığınız şey bana çok uzun gelmedi:

>>> take_item = lambda t, c: t[c[0]][c[1]]
>>> take_item(table, [1,2])

Veya numpy.array kullanabilirsiniz:

>>> import numpy
>>> table = numpy.array(table)
>>> table[(1,2)]
1 Beğeni