Ищем фрагмент для преобразования строки в список целых чисел

1

В качестве примера:

>> s = '0123456' 
>> list(s)
['0', '1', '2', '3', '4', '5', '6']

Я придумал это:

>> map( lambda x:int(x), list(s) )
[0, 1, 2, 3, 4, 5, 6]

Можно ли это улучшить?

  • 0
    Что не так с вашим текущим решением? Это не работает? Это слишком медленно? Вас высмеивали ваши товарищи по команде? Серьезно, иногда вам просто нужно отпустить абсолютного совершенства и доставить продукт :-)
  • 0
    Меня еще не высмеивали. Но, возможно, я должен преодолеть свое смущение и просто проверить это.
Показать ещё 1 комментарий
Теги:

3 ответа

8

Просто используйте представление списка или, если необходимо, выражение генератора. Простой и немного более быстрый (возможно) более читаемый.

[int(x) for x in s]
  • 0
    Это кажется правильным!
  • 4
    Понимания списка обычно предпочтительнее использования map (), filter (), redu () и т. Д.
Показать ещё 4 комментария
6
>>> map(int, ['1', '2'])
[1, 2]

>>> map(int, '123')
[1, 2, 3]
  • 0
    Правильно. Мне не нужна лямбда
  • 0
    Почему понизить ????
2

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

>>> s = '0123456' 
>>> map(lambda x:int(x), s)
[0, 1, 2, 3, 4, 5, 6]

Если вы предпочитаете понимание/итератор списка, см . Ответ @zeekay.

  • 0
    Как заметка, в этом случае в python 2.x понимание списка выглядит намного быстрее

Ещё вопросы

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