索引列表元素

Indexing a list a element

你能帮我一下吗

给定一个单词列表(即这个列表可以包含任意数量的字符串,并且字符串的位置是随机的):

List1 = ['ENG', 'ENG', 'NEUTRAL' , 'TSO', 'ENG', 'TSO' ]

List2 = ['NEUTRAL', 'NEUTRAL', 'ENG', 'ENG', 'NEUTRAL' , 'TSO', 'ENG', 'TSO', 'NEUTRAL']

我想定义这个列表的索引。 NEUTRAL 字符串的索引必须为 -1。其他字符串的索引必须依次为0、1等。

例如在 list1 中,索引必须是 indexes = [0, 1, -1, 2, 3, 4]。 List 2 索引必须是 indexes = [-1, -1, 0, 1, -1, 2, 3, 4, -1]

这是我的尝试:

这是其中一种方法:

List1 = ['NEUTRAL', 'NEUTRAL', 'ENG', 'ENG', 'NEUTRAL' , 'TSO', 'ENG', 'TSO', 'NEUTRAL']
indexes = []
counter = 0
for element in List1:
    if element == 'NEUTRAL':
        indexes.append(-1)
    else:
        indexes.append(counter)
        counter += 1
    
print (indexes)

输出:

[-1, -1, 0, 1, -1, 2, 3, 4, -1]
    

您可以使用 itertools.count 生成计数器和列表理解:

from itertools import count
c = count()

out = [next(c) if v!= 'NEUTRAL' else -1 for v in List1]

输出:[0, 1, -1, 2, 3, 4]

“List2”的输出:[-1, -1, 0, 1, -1, 2, 3, 4, -1]