Предполагая, что у меня есть список ниже, как я могу найти все индексы идентифицированного объекта в списке
ЧТО Я ОЖИДАЮ (ВСЕ индексы «пера»):
OUTPUT: (0,0),(3,4),(4,4),(4,2),(3,4)
a_list = [['pen', 'pencil', 'eraser'],
['ruler', 'paper', 'pen'],
['pen', 'pen', 'bag'],
['pencil', 'pen', 'paper']]
def finding(listoflist, stationary):
for i in listoflist:
if stationary in i:
return (i.index(stationary)),(listoflist.index(i))
finding(a_list, 'pen')
OUTPUT: (0, 0)
Не понимаю, почему у этого поста тег numpy
?!
Может быть, вы можете попробовать это сначала:
Объясните - поскольку это вложенные списки, вам нужно сначала зациклить каждый подсписок, а затем просмотреть каждый элемент, чтобы проверить, является ли он стационарным.
a_list = [['pen', 'pencil', 'eraser'],
['ruler', 'paper', 'pen'],
['pen', 'pen', 'bag'],
['pencil', 'pen', 'paper']]
def finding(lsts, stationary):
result = []
for i, ll in enumerate(lsts):
for j, item in enumerate(ll):
if item == stationary:
result.append((i, j))
return result
print(finding(a_list, 'pen'))
# [(0, 0), (1, 2), (2, 0), (2, 1), (3, 1)]
# You can even do this in one List Comprehension, if you'd like short code:
ans = [(i, j) for i, ll in enumerate(lsts) for j, item in enumerate(ll) if item == 'pen']
def fun(a_list,search_item):
res=[]
for i1,nest in enumerate(a_list):
for i2,item in enumerate(a_list[i1]):
if item==search_item:
res.append((i1,i2))
return res
Кроме того, это дублирующий ответ. Пожалуйста, не публикуйте их; если у вас 600 повторений, вы уже должны это знать.
Прошу прощения, но к тому времени, когда я опубликовал свой, других ответов не было.
Извините, я предположил, что это обман, потому что он был в LQA; кроме того, все ответы были опубликованы «6 часов назад», поэтому я не могу сказать, какой из них был первым.
Поскольку он был помечен как numpy, вот подход numpy:
import numpy as np
stationary = np.array([
['pen', 'pencil', 'eraser'],
['ruler', 'paper', 'pen'],
['pen', 'pen', 'bag'],
['pencil', 'pen', 'paper']
])
out = list(zip(*np.where(stationary == "pen")))
[(0, 0), (1, 2), (2, 0), (2, 1), (3, 1)]
Вам нужно собрать все значения, а не возвращаться к первому