0

我有一个这样的清单

[796, 829, 1159, 1162]

我也有一个这样的列表:

['144 154', '145 151', '145 152', '145 153', '145 154', '146 152', '146 153', '146 154', '147 153', '147 154'] 这些不是按比例的

我想要做的是使用第一个列表元素作为最后一个数组的索引

我试过这段代码:

contacts = []
for i in findres:
    contacts += rulelines[i]
print contacts

findres第一个列表和最后一个列表在哪里但是这会奇怪地rulelines打印出列表:contacts

['5', ' ', '7', '2', '5', ' ', '1', '0', '5', '7', ' ', '1', '5', '0', '7', ' ', '1', '5', '3']

我敢肯定这很容易,但我哪里错了?

我认为理想的输出是['5 72','5 105', '7 150',7 153']

我没有放下所有的列表元素,因为每个元素都有 100 多个

4

3 回答 3

2

看起来当您分配时,contacts = rulelines[i]您实际上是在分配rulelines[i]字符串。您应该contacts.append(rulelines[i])将联系人添加到列表中,否则您会不断覆盖上次分配的内容。

于 2013-04-24T18:06:22.137 回答
1

将此用作模板:

findres = [5, 7, 15, 22]
contacts = list('abcdefghijklmnopqrstuvwxyz') # dummy list

result = [ contacts[index] for index in findres ]
print result

# ['f', 'h', 'p', 'w']
于 2013-04-24T18:07:42.913 回答
0

如果我理解正确,您需要提取 first 的每个元素中的findres第一个数字。然后,使用这些提取的数字作为另一个数组的索引

>>> findres = ['144 154', '145 151', '145 152', '145 153', '145 154', '146 152', '146 153', '146 154', '147 153', '147 154']
>>> first_elements = [c.split()[0] for c in findres]
>>> print first_elements 

['144', '145', '145', '145', '145', '146', '146', '146', '147', '147']

>>> contact = []
>>> for i in first_elements:
        contacts.append(rulelines[i])
于 2013-04-24T18:15:03.907 回答