Hướng dẫn how do you find index of an element in a 2d list python? - làm thế nào để bạn tìm thấy chỉ mục của một phần tử trong danh sách 2d python?

Tôi đã mày mò trong Python trong tuần này và tôi đã bị mắc kẹt trong một cái gì đó. Nếu tôi có danh sách 2D như thế này:
If I had a 2D list like this:

myList = [[1,2],[3,4],[5,6]]

Và tôi đã làm điều này

>>>myList.index[[3,4]]

nó sẽ trở lại

1

Tuy nhiên, tôi muốn chỉ số của một cái gì đó ở bên một trong các danh sách, như thế này

    >>>myList.index[3]

Và nó sẽ trở lại

1, 0

Có điều gì có thể làm điều này?

Chúc mừng

Tituszban

4.4092 Huy hiệu vàng18 Huy hiệu bạc28 Huy hiệu đồng2 gold badges18 silver badges28 bronze badges

Hỏi ngày 25 tháng 4 năm 2011 lúc 5:05Apr 25, 2011 at 5:05

Sam Jarmansam JarmanSam Jarman

7.26714 Huy hiệu vàng53 Huy hiệu bạc100 Huy hiệu Đồng14 gold badges53 silver badges100 bronze badges

2

Thử cái này:

def index_2d[myList, v]:
    for i, x in enumerate[myList]:
        if v in x:
            return [i, x.index[v]]

Usage:

>>> index_2d[myList, 3]
[1, 0]

Đã trả lời ngày 25 tháng 4 năm 2011 lúc 5:14Apr 25, 2011 at 5:14

Mark Byersmark ByersMark Byers

787K188 Huy hiệu vàng1553 Huy hiệu bạc1440 Huy hiệu đồng188 gold badges1553 silver badges1440 bronze badges

Nếu bạn đang thực hiện nhiều tra cứu, bạn có thể tạo một ánh xạ.

>>> myList = [[1,2],[3,4],[5,6]]
>>> d = dict[ [j,[x, y]] for x, i in enumerate[myList] for y, j in enumerate[i] ]
>>> d
{1: [0, 0], 2: [0, 1], 3: [1, 0], 4: [1, 1], 5: [2, 0], 6: [2, 1]}
>>> d[3]
[1, 0]

Đã trả lời ngày 25 tháng 4 năm 2011 lúc 8:26Apr 25, 2011 at 8:26

Sử dụng GenExpr đơn giản:

def index2d[list2d, value]:
    return next[[i, j] for i, lst in enumerate[list2d] 
                for j, x in enumerate[lst] if x == value]

Thí dụ

print index2d[[[1,2],[3,4],[5,6]], 3]
# -> [1, 0]

Đã trả lời ngày 25 tháng 4 năm 2011 lúc 6:52Apr 25, 2011 at 6:52

JFSJFSjfs

386K183 Huy hiệu vàng950 Huy hiệu bạc1626 Huy hiệu Đồng183 gold badges950 silver badges1626 bronze badges

Không có gì làm điều này rồi, trừ khi nó ở Numpy, điều mà tôi không biết nhiều. Điều này có nghĩa là bạn sẽ phải viết mã thực hiện nó. Và điều đó có nghĩa là những câu hỏi như "

>>>myList.index[[3,4]]
6 trở lại là gì?" quan trọng.

Đã trả lời ngày 25 tháng 4 năm 2011 lúc 5:12Apr 25, 2011 at 5:12

OmnifarityomnifyingOmnifarious

53.3K18 Huy hiệu vàng129 Huy hiệu bạc191 Huy hiệu Đồng18 gold badges129 silver badges191 bronze badges

>>>myList.index[[3,4]]
0

Điều này sẽ trả về nhiều hơn một phiên bản của danh sách phụ, nếu có.

Đã trả lời ngày 25 tháng 4 năm 2011 lúc 5:21Apr 25, 2011 at 5:21

Dawgdawgdawg

Phù bằng vàng 94K2323 gold badges122 silver badges200 bronze badges

Thử cái này! Điều này làm việc cho tôi :]

>>>myList.index[[3,4]]
1

Đã trả lời ngày 28 tháng 1 năm 2017 lúc 18:25Jan 28, 2017 at 18:25

1

Dựa trên câu trả lời của KevPie, tôi đã quản lý để có được danh sách 2D chứa tọa độ của tất cả các sự cố

>>>myList.index[[3,4]]
2

Bây giờ CoordSlist chứa tất cả các chỉ mục cho giá trị 1 trong Mylist:

>>>myList.index[[3,4]]
3

Đã trả lời ngày 7 tháng 6 năm 2018 lúc 13:56Jun 7, 2018 at 13:56

Thận trọng: Câu trả lời đầu tiên trên đó: The first answer up there:

def index_2d[myList, v]:
    for i, x in enumerate[myList]:
        if v in x:
            return [i, x.index[v]]

sẽ gây ra rất nhiều lỗi miễn là có bất kỳ phần tử nào/giống hệt nhau, cho bất kỳ V nào trong mỗi x. Bởi vì x.index [v] chỉ trả về chỉ mục đầu tiên [ngoài cùng bên trái] của bất kỳ phần tử nào có cùng giá trị của v, trong x, không phải là chỉ mục thực tế của v. Nghĩa là, điều này chỉ hoạt động nếu tất cả các phần tử trong mỗi hàng là duy nhất.errors as long as there are any equal/identical elements, for any v in each x. Because x.index[v] only returns the first [leftmost] index of any element that has the same value of v, in x, NOT the actual index of the current v. That is, this only works if all elements in each row are unique.

Thay vào đó, hãy thử điều này để tránh các giá trị không duy nhất:

>>>myList.index[[3,4]]
5

Đã trả lời ngày 19 tháng 3 lúc 4:24Mar 19 at 4:24

Chủ Đề