#python #arrays #list #input
Вопрос:
Недавно я попробовал какое-то конкурентное кодирование, и очень распространенной вещью (по крайней мере, с моей точки зрения) является предоставление списка целых чисел, разделенных пробелами, в качестве входных данных. Например:
>>> 5 6 7 8 8 1 3 2
Я хочу иметь возможность прочитать этот ввод и превратить его в список на Python:
>>> 5 6 7 8 8 1 3 2
[5, 6, 7, 8, 8, 1, 3, 2]
До сих пор это самый эффективный метод, с которым я сталкивался:
newList = list(map(int, input.split()))
print(newList)
Я также видел метод, в котором вы читаете входные данные в виде строки, а затем составляете список, но я думаю map
, что он все еще более эффективен.
Есть ли более эффективный способ, чем это, прочитать список целых чисел и превратить его в список? Спасибо!
Комментарии:
1. «Я также видел метод .split (), но я думаю, что map все еще более эффективен». — Вы используете и то, и другое в своем текущем методе.
2. Это сводится к семантике, предпочтениям и тому, что некоторые могут назвать питоническим . Основываясь на приведенных примерах входных данных, то, что у вас есть, прекрасно. Вероятно, вы экономите несколько циклов по сравнению с перечислением
input.split()
и добавлением в список, но увеличение производительности незначительно. Решение эффективноO(n)
в любом случае.3. @h0r53 да, я это исправил, наверное, это было немного неясно, извините. Я и не знал , что эта карта такая
O(n)
классная!4.
map
просто вызывает функцию для каждого элемента в коллекции. Таким образом, функция вызываетсяn
раз, когдаn
количество элементов в коллекции.map
само по себе это не обязательноO(n)
, ноmap()
n
время вызова есть.int()
являетсяO(1)
. ТакO(n) * O(1)
O(n)
что в данном случае у вас есть=.
Ответ №1:
попробуйте вот это
print("5 6 7 8 8 1 3 2".replace(" ",","))
print("5,6,7,8,8,1,3,2".replace(","," "))
Ответ №2:
я думаю, это то, что ты ищешь
print(" ".join([5, 6, 7, 8, 8, 1, 3, 2])) # for converting to "[5 6 7 8 8 1 3 2"
print("5 6 7 8 8 1 3 2".split(" ")) #for converting back
Комментарии:
1. На самом деле это не совсем то, что я ищу, хотя это, безусловно, хороший метод для объединения/разделения строк на списки.
2. скажите мне, чего вы ожидаете от ввода и вывода, я сейчас напишу вам код
3. Ввод: список целых чисел, разделенных пробелами; Вывод: Тот же список целых чисел, но теперь это список python, разделенный запятыми, а не пробелами