作者abram (科科)
看板Python
标题[问题] 在任意维度的 List 中找某元素的位置?
时间Wed Nov 13 19:18:29 2019
不好意思,因为用习惯了 Mathematica 的 Position 指令,
所以小弟正在用 Python 写一个执行相同功能的指令。
现在卡住的点是,如果知道输入的 List 是二维的,
当然就是用两层的 for loop:
def position(arr,cri):
index=[];
for i in range(len(x)):
for j in range(len(x[i])):
if x[i][j] == cri:
index.append([i, j])
return index
相对地,若知道输入 List 是三维的当然就用三层的 loop。
可是当程式处理的维度由输入 List 内生决定时,例如在
Mathematica 可以执行:
Position[{2, {1, 2}, {{1, 1, 2}}}, 2]
得到结果为:
{{1}, {2, 2}, {3, 1, 3}}
不知道要怎麽写才能在 Python 下实作类似的功能呢?
谢谢!
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 1.169.100.216 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Python/M.1573643911.A.4C0.html
1F:→ s860134: itertools 弄成一维 11/13 19:42
2F:→ abram: 弄成一维只能知道是否含此元素 无法知道位置 11/13 19:52
3F:→ s860134: 要找index 那用递回呼叫就可以了 看要 bfs 还dfs 11/13 20:04
4F:推 TitanEric: 可以用numpy搭配where 11/13 20:09
5F:→ abram: 谢谢 argwhere对於任意维度的长方矩阵确实有用 11/13 20:51
6F:→ abram: 虽然对於非矩形的不对称list不适用 但也够用了 11/13 20:52
7F:→ nevak: 可以用type()来判断是不是list 11/13 21:06
9F:→ nevak: ive更简洁一点 11/13 21:07