简体   繁体   English

在列表Python中打印值的位置

[英]Print Location of Value within a list of lists Python

If I am given a list with a few lists within it and I want the location of each occurrence of a value or string, how might I do that given the following code: 如果给我一个包含几个列表的列表,并且我希望每次出现一个值或字符串的位置,给定以下代码,我该怎么做:

testlist = [[1, 2, 3],[ 5, 3, 1],[ 2, 1, 6]]

for i in [i for i,x in enumerate(testlist) if x == 1]: print i 对于[如果x == 1,则为枚举(测试列表)中的i,x中的i]:打印i

I would think it would print out 我认为它将打印出来

[0][0]
[2][1]

I don't just want to say: 我不只是想说:

print testlist[0][0] 打印测试清单[0] [0]

How might this be achieved? 如何实现?

In [121]: testlist = [[1, 2, 3],[ 5, 3, 1],[ 2, 1, 6]]

In [122]: for i,sub in enumerate(testlist):
   .....:     for j,num in enumerate(sub):
   .....:         if num==1: print("[{}][{}]".format(i,j))
   .....:         
[0][0]
[1][2]
[2][1]

If you want a function that looks for any generic value: 如果您想要一个寻找任何通用值的函数:

def search(L, val):
    answer = []
    for i, sub in enumerate(L):
        for j,num in enumerate(sub):
            if num==val:
                answer.append([i,j])
    return answer

If you want a one-liner: 如果您想要单线:

val = 1
answer = [[i,j] for i,sub in enumerate(testlist) for j,num in enumerate(sub) if num==val]
ll = [[1, 2, 3],[ 5, 3, 1],[ 2, 1, 6]]

for k, el in enumerate(ll):
    for i,j in enumerate(el):
        print("row {} column {} elemen {}".format(k, i, j))

row 0 column 0 elemen 1
row 0 column 1 elemen 2
row 0 column 2 elemen 3
row 1 column 0 elemen 5
row 1 column 1 elemen 3
row 1 column 2 elemen 1
row 2 column 0 elemen 2
row 2 column 1 elemen 1
row 2 column 2 elemen 6

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM