将索引值转换为 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)]
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)]