So erhalten Sie die Position eines Elements aus einer verschachtelten Liste in Python [Duplikat]

Aug 28 2020

Wenn ich eine Liste habe, die so aussieht

list = [[1,2,3], [4,5,'X'], [7,8,'X']] 

Wie kann ich die Position von X erhalten, dh wie (i, j)?

Antworten

4 hippozhipos Aug 28 2020 at 15:22

listist ein Python-Schlüsselwort, daher ist es wahrscheinlich besser, einen anderen Namen zu verwenden. Um auf ein Listenelement zuzugreifen, können Sie folgende Syntax verwenden : listname[indexNumber]. Beachten Sie, dass der Index bei 0 beginnt. Um also auf das X in der zweiten Liste in der verschachtelten Schleife zuzugreifen, müssen Sie zuerst auf die zweite Liste zugreifen. so secondList = list[1]. Dann können Sie X erhalten, das sich an der zweiten Indexposition befindet. x = secondList[2]. Sie können dies auch in derselben Zeile tun:print(list[1][2])

2 Mureinik Aug 28 2020 at 15:26

Sie können die "äußere" Liste durchlaufen und indexfür die innere Liste verwenden:

def find(matrix, item):
    for i in range(len(matrix)):
        try: 
            j = matrix[i].index(item)
            return (i, j)
        except ValueError:
            pass
    raise ValueError # If item isn't found
1 Noname Aug 28 2020 at 15:28

Sie können dies mit Listen-Slicing tun.

l = [[1,2,3], [4,5,'X'], [7,8,'X']]

print(l[0][0], l[1][2], l[2][0])

print(l[1][2])
 
# [0][0] == first list in list and first item in the first list
# [1][2] == second list and third item in the second list
# [2][0] == third list and first item in that list

Ausgabe

1 X 7

X

tolles Python List Slicing Tuto hier

BWallDev Aug 28 2020 at 15:21

Versuche dies

list1 = [[1,2,3], [4,5,'X'], [7,8,'X']] 


print(list1[1][2])
print(list1[2][2])

Wenn Sie nicht wissen, wo jedes Mal 'X' sein wird:

test_list = [[1,2,3], [4,5,'X'], [7,8,'X']] 

x = None
y = None

for separate_list in test_list:
    for var in separate_list:
        if var == 'X':
            if x == None:
                x = var
            elif y == None:
                y = var
            
pos = (x,y)

print(pos)