Каков наиболее эффективный способ чтения в списке чисел, разделенных пробелами в python?

#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, разделенный запятыми, а не пробелами