當時寫的時候,發現網上沒有類似的,知乎上有人問,卻沒有答案。那就自己動手吧
這種情況是3維的,但是有沒有可能實現多維?
def
find_where
(list_3, target):
for t in range(len(list_3)):
for tr in range(len(list_3[t])):
for td in range(len(list_3[t][tr])):
if list_3[t][tr][td] == target:
print(t, tr, td)
list_3 = [[[1,2,3],[4,5,6],[7,8,9],[10,11,12]],[[34,56,7],[4,6,8]],[[1,8,89]]]
target = 8
find_where(list_3, target)
重新看了一下**,發現問題還是挺多,這裡修改後的方法:
list_3 = [[[1,2,3],[4,5,6],[7,8,9],[10,11,8,12]],[[34,56,7],[4,6,8]],[[1,8,89]],[8,8,[8,1,[8,[98,8]]]]]
target = 8
def find_all(mylist,target,returnlist=):#只需要傳入陣列,目標,返回列表
if isinstance(mylist,list):
for key1,value1 in enumerate(mylist):
if isinstance(value1,list):
find_all(value1,target,returnlist)
elif isinstance(value1,int) and target == value1:
print returnlist
returnlist.pop()
elif isinstance(value1,int) and target != value1:
returnlist.pop()
#if len(returnlist)%size != 0
and len(returnlist) > size:
# returnlist = returnlist[:len(returnlist)-len(returnlist)%size]
if len(returnlist)!= 0:
returnlist.pop()
else:
return
''return returnlist
find_all(list_3,target,)
這種情況實現了多維。用的是遞迴。每次都加入key,最後pop,但是回頭看發現出了一點問題
下面是錯誤**解剖
list_3 = [[[1,2,3],[4,5,6],[7,8,9],[10,11,12]],[[34,56,7],[4,6,8]],[[1,8,89]]]
target = 8
deffind_all
(mylist,target,returnlist=,size=3):
""" mylist是傳入的列表,target是要找的目標值,size是列表的深度
"""if isinstance(mylist,list):# 不管是不是,都新增索引到list中
for key1,value1 in enumerate(mylist):
if isinstance(value1,list): # 如果value還是,就直接遞迴呼叫。
find_all(value1,target,returnlist)
elif isinstance(value1,int) and target == value1: # 如果是int,就判斷值是不是目標值
print returnlist # 如果是就列印一下
returnlist.pop()# 同時把當前的索引彈出
elif isinstance(value1,int) and target != value1: #如果不是,就彈出當前索引
returnlist.pop()
if len(returnlist)%size != 0
and len(returnlist) > size:
# 如果長度不是3的倍數。應該把超出部分截掉 a=[1,2,3,4,5] a[:5-5%3]= a[:3] = [1,2,3]
# 但是這樣做並不能解決問題。。。所以這個判斷應該去掉。
returnlist = returnlist[:len(returnlist)-len(returnlist)%size]
elif len(returnlist)!= 0:
#如果上面的判斷通過,就直接返回了。只要不為0,就彈出一下,因為進入列表之後,會出現少彈出乙個的情況。事實上,這樣做很正確。
returnlist.pop()
else:
# 如果為空,返回空,防止最後出現none情況。具體**見上面
return
''return returnlist
find_all(list_3,target,,3)
有更好的辦法或疑惑可以與我交流。 Python 刪除列表中指定的元素
remove方法用於按值刪除元素,返回值為none pop方法用於按下標刪除元素,返回值為刪除的元素。remove方法用於按值刪除元素,返回值為none pop方法用於按下標刪除元素,返回值為刪除的元素。l c d e f print l 推薦 res l.remove e print l,res ...
django模板獲取list中指定索引的值方式
格式 list.index 示例 補充知識 使用django從後端向前端頁面中傳遞乙個陣列的方法 今天用django框架時遇到乙個坑,就是當前端頁面接收後端傳回來的資料時,該資料是乙個列表形式,列表裡有字串型別的資料,然後就一直報錯。查了老半天才知道是django的自動轉義搞的鬼!那什麼是轉義呢,就...
vue js刪除陣列中指定索引的元素
在前端開發中,我們經常需要對陣列進行操作,增刪改是經常的事情,那我們js中該如何刪除指定的下標元素呢?我們用splice來操作 splice 方法用於新增或刪除陣列中的元素。注意 這種方法會改變原始陣列。陣列中新增新元素 fruits 輸出結果 如果僅刪除乙個元素,則返回乙個元素的陣列。如果未刪除任...