将索引值转换为 python3 中的整数元组

converting index values into integer tuples in python3

candidatelist = [['n', 'n', 'n', 'n', 'e', 'n', 'e', 'n'], ['n', 'n', 'n', 'n', 'n', 'n', 'e', 'n'], ['n', 'e', 'n', 'n', 'n', 'n', 'n', 'n'], ['n', 'e', 'n', 'n', 'n', 'n', 'n', 'n'], ['n', 'n', 'n', 'n', 'n', 'n', 'n', 'n'], ['e', 'n', 'n', 'n', 'n', 'n', 'n', 'n'], ['n', 'n', 'n', 'n', 'n', 'e', 'n', 'n'], ['n', 'n', 'e', 'e', 'n', 'n', 'n', 'n']]

check = "e"


mytuplelist = (
["({}, {})".format((index1), (index2)) for index1, value1 in enumerate(candidatelist) for index2, value2 in
 enumerate(value1) if value2 == check])

我可以收集我需要的索引值。我可以成功地将它们转换成字符串。但是,我不需要字符串,我想创建一个整数元组(对)列表。我试过几个这样的事情:

mytuplelist = ([({}, {})(int(index1), int(index2)) for index1, value1 in enumerate(candidatelist) for index2, value2 in
 enumerate(value1) if value2 == check])

但我无法正常工作。有没有一种不用重新格式化字符串就可以做到这一点的好方法?谢谢!

你可以试试这个:

mytuplelist = (
[((index1), (index2)) for index1, value1 in enumerate(candidatelist) for index2, value2 in
 enumerate(value1) if value2 == check])
print(mytuplelist)

上面的代码将 return 子列表中的所有索引,如果您只想要第一次出现的索引,请尝试以下代码:

mytuplelist = (
[(index1 , value1.index(check)) for index1, value1 in enumerate(candidatelist) if check in value1])
print(mytuplelist)

为了清楚起见,没有一行

candidatelist = [['n', 'n', 'n', 'n', 'e', 'n', 'e', 'n'], ['n', 'n', 'n', 'n', 'n', 'n', 'e', 'n'], ['n', 'e', 'n', 'n', 'n', 'n', 'n', 'n'], ['n', 'e', 'n', 'n', 'n', 'n', 'n', 'n'], ['n', 'n', 'n', 'n', 'n', 'n', 'n', 'n'], ['e', 'n', 'n', 'n', 'n', 'n', 'n', 'n'], ['n', 'n', 'n', 'n', 'n', 'e', 'n', 'n'], ['n', 'n', 'e', 'e', 'n', 'n', 'n', 'n']]

check = "e"

tupleslist = []
for i in enumerate(candidatelist):
    try:
        tupleslist.append((i[0],i[1].index(check)))
    except:
        tupleslist.append((1,0))

你得到:[(0, 4), (1, 6), (2, 1), (3, 1), (1, 0), (5, 0), (6, 5) , (7, 2)]