toxide
Nisan 2, 2020, 3:11ös
1
Ö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?
toxide
Nisan 2, 2020, 3:20ös
3
Aslında değerler çok önemli değil ama bir örnek veriyim:
table = [
["B", "5", "2"],
["2", "G", "?"],
["D", "1", "4"],
]
coordinates = [2, 0]
toxide:
table[y, x]
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
toxide
Nisan 2, 2020, 3:22ös
5
Pardon düzelttim orasını.
toxide
Nisan 2, 2020, 3:23ös
6
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