我的代码需要一些帮助,当我使用value的索引从数组中获取每个元素时,我无法找到如何获得我想要的元素。
以下是prog_id
的输出:
22:24:21 T:2192 NOTICE: 3046
22:24:21 T:2192 NOTICE: 3174
22:24:21 T:2192 NOTICE: 3302
22:24:21 T:2192 NOTICE: 3430
22:24:21 T:2192 NOTICE: 3558
22:24:21 T:2192 NOTICE: 3686
22:24:21 T:2192 NOTICE: 3814
以下是您可以从数组中获取的每个元素的值:
>>>> 0 22:24:21 T:2192 NOTICE: 3046
>>>> 1 22:24:21 T:2192 NOTICE: 3174
>>>> 2 22:24:21 T:2192 NOTICE: 3302
>>>> 3 22:24:21 T:2192 NOTICE: 3430
>>>> 4 22:24:21 T:2192 NOTICE: 3558
>>>> 5 22:24:21 T:2192 NOTICE: 3686
>>>> 6 22:24:21 T:2192 NOTICE: 3814
以下是prog_index
的输出值:
22:24:21 T:2192 NOTICE: 1
22:24:21 T:2192 NOTICE: 3
22:24:21 T:2192 NOTICE: 5
22:24:21 T:2192 NOTICE: 6
这是我想要实现的目标:
22:24:21 T:2192 NOTICE: 3174
22:24:21 T:2192 NOTICE: 3430
22:24:21 T:2192 NOTICE: 3686
22:24:21 T:2192 NOTICE: 3814
以下是代码:
program_index_ = list()
if current_program_length >= 30:
program_index = self.program_index
program_index_.append(program_index)
program_button = [elem.control for elem in self.program_buttons]
progId = list()
posX = list()
posY = list()
for elem in program_button:
progId.append(elem.getId())
posX.append(elem.getX())
posY.append(elem.getY())
progId = map(str, progId)
posX = map(str, posX)
posY = map(str, posY)
for pos_X, pos_Y, prog_id, prog_index in izip_longest(posX, posY, progId, program_index_, fillvalue=''):
if int(pos_X) == 375:
print prog_id
我试过这个:
prog_index = prog_id[test_index]
print prog_index
它给我一个错误:TypeError:字符串索引必须是整数,而不是str
我想我做错了。
您能否告诉我如何使用变量prog_id
从prog_index
获取值,以便我可以使用值来搜索数组中的每个元素?
答案 0 :(得分:0)
我不确定我是否理解你的问题。听起来你知道你试图从列表中获取的元素的索引,并且你想要基于索引1,3,5,6的每个元素的输出。如果是这样,这段代码应该适合你:< / p>
data = ['22:24:21 T:2192 NOTICE: 3046',
'22:24:21 T:2192 NOTICE: 3174',
'22:24:21 T:2192 NOTICE: 3302',
'22:24:21 T:2192 NOTICE: 3430',
'22:24:21 T:2192 NOTICE: 3558',
'22:24:21 T:2192 NOTICE: 3686',
'22:24:21 T:2192 NOTICE: 3814']
index_get = [1,3,5,6]
data2 = [data[i] for i in index_get]
print (data2)
输出:
['22:24:21 T:2192 NOTICE: 3174', '22:24:21 T:2192 NOTICE: 3430', '22:24:21 T:2192 NOTICE: 3686', '22:24:21 T:2192 NOTICE: 3814']