Найти индекс в списке с помощью python 3

Опять у меня проблемы с синтаксисом Python (с использованием Python 3)

f=["-5","-4","-3","-2","-1","0","1","2","3","4","5"]
print(f.index('-'))

что я делаю не так, потому что это дает мне

Traceback (most recent call last):
File "python", line 4, in <module>
ValueError: '-' is not in list

?

Мне нужен индекс в списке или массиве, чтобы заменить отрицательный знак на M. Мне также может понадобиться помощь с кодом замены.

Что ты пытаешься сделать.. ? list.index предназначен для точного совпадения? вы хотите проверить подстановочный знак или первое вхождение?

Deepak K Gupta 26.10.2018 06:08

просто пытаюсь найти - скоро на него ответил отрицательный знак!

John 26.10.2018 06:21
0
2
48
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

list.index ищет точное совпадение. Если вы хотите заменить отрицательный знак на M для всех элементов, вы можете перебирать список и вызывать str.replace для каждого элемента:

In [14]: f=["-5","-4","-3","-2","-1","0","1","2","3","4","5"]

In [15]: [x.replace('-', 'M') for x in f]
Out[15]: ['M5', 'M4', 'M3', 'M2', 'M1', '0', '1', '2', '3', '4', '5']

Поскольку в принятом ответе используется понимание списка, приведенный ниже код такой же, но с простым циклом For.

f=["-5","-4","-3","-2","-1","0","1","2","3","4","5"]

for i, x in enumerate(f):
    f[i] = x.replace("-","M")

print(f)

Примечание: это будет работать, только если ваш список содержит только строки.

Ответ принят как подходящий

Ошибка очень очевидна. Ни один элемент список f не равен -. Если вы хотите получить индекс любого элемента в f, вам следует использовать метод list.index, как показано ниже.

f=["-5","-4","-3","-2","-1","0","1","2","3","4","5"]
f.index("0")

>>> 5

Индекс элемента «0» в f - 5. То есть «0» является элементом шестойf.

Если вы хотите заменить каждое вхождение "-" на M в f, вы можете использовать любой из двух методов, предложенных @soon и @Anthony, или вы можете использовать регулярные выражения и понимание списка. Я также прикрепил код.

import re
[re.sub('-', 'M', x) for x in f]

>>> ['M5', 'M4', 'M3', 'M2', 'M1', '0', '1', '2', '3', '4', '5']

Думаю, было бы полезно посмотреть этот учебник w3Schools на индекс списка.

спасибо за помощь. Я буду искать w3Schools

John 26.10.2018 09:29

Другие вопросы по теме