Есть ли более простой способ удалить «-» перед каждой строкой в массиве [duplicate]

1

Я ищу более простой способ удалить '-' перед каждой строкой в списке. (только первый "-", если перед строкой есть один)

note_tmp = [
    "-some-text",
    "-other text",
    "another-one",
    "-text number four"
]
note_done = []
for note in note_tmp:
    if note.startswith("-"):
        note_done.append(note[1:])
    else:
        note_done.append(note)

print(note_done)

Я думаю, что это может быть написано гораздо проще...

Спасибо за вашу помощь ;)

  • 0
    Я не знаю, есть ли какой-то метод; но я думаю; эти методы, наконец, сделают то же самое; то есть. итерация и проверка; затем изменение и добавление; какой курс вы сделали. Также одна вещь может быть сокращена; удалить блок else и напрямую изменить основной список (если где-то есть безопасная копия)
Теги:

3 ответа

3
Лучший ответ

str.lstrip('-') должен сделать:

In [83]: note_tmp = [
    ...:     "-some-text",
    ...:     "-other text",
    ...:     "another-one",
    ...:     "-text number four"
    ...: ]

In [84]: [s.lstrip('-') for s in note_tmp]
Out[84]: ['some-text', 'other text', 'another-one', 'text number four']

S.lstrip([chars]) → str

Вернуть копию строки S с удаленными начальными пробелами. Если заданы символы, а не None, вместо них удалите символы в символах.

  • 0
    Спасибо;), что сработало
  • 0
    @swiftlynx Рад помочь :)
2

Вы можете использовать str.lstrip() со списком, чтобы достичь этого как:

my_list = [
    "-some-text",
    "-other text",
    "another-one",
    "-text number four"
]

new_list = [s.lstrip('-') for s in my_list]

где new_list будет содержать значение:

['some-text', 'other text', 'another-one', 'text number four']
  • 0
    Спасибо;), что сработало
1

Просто добавьте альтернативный подход, используя нарезку списка и понимание списка;

note_tmp = [
        "-some-text",
        "-other text",
        "another-one",
        "-text number four"
    ]

new_note_tmp = [x[1:] if x[0] == '-' else x for x in note_tmp]

print(new_note_tmp)

>>>['some-text', 'other text', 'another-one', 'text number four']
  • 0
    понимание списка не делает его немного короче
  • 0
    Я позволю себе не согласиться, так как он на 5 строк короче. Кроме того, никто не просил «более короткого» решения.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню