Каков наиболее эффективный способ ввода пользовательских данных в список python? - PullRequest
2 голосов
/ 30 марта 2020

Мой ввод будет что-то в виде:

10
3 6 7 5 3 5 6 2 9 1
2 7 0 9 3 6 0 6 2 6

здесь 10 - общее количество элементов. за которыми следуют две строки ввода для двух отдельных списков.

Я использую следующие строки для ввода:

n=int(input())
m=list(map(int,input().split()))[:n]
q=list(map(int,input().split()))[:n]

Более того, я буду сортировать их, используя

m.sort()
q.sort()

Было бы очень полезно, если бы кто-нибудь помог мне найти наиболее эффективный способ выполнения вышеуказанных шагов. Я провел несколько поисков и нашел различные альтернативы для получения входных данных, но нигде не нашел того, что было бы наиболее эффективным способом решения этой проблемы.

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

Ответы [ 2 ]

0 голосов
/ 30 марта 2020
    We often encounter a situation when we need to take number/string as input from user. In this article, we will see how to get as input a list from the user.

    Examples:

    Input : n = 4,  ele = 1 2 3 4
    Output :  [1, 2, 3, 4]

    Input : n = 6, ele = 3 4 1 7 9 6
    Output : [3, 4, 1, 7, 9, 6]

    Code #1: Basic example


<!-- language: lang-phyton -->

    # creating an empty list 
    lst = [] 

    # number of elemetns as input 
    n = int(input("Enter number of elements : ")) 

    # iterating till the range 
    for i in range(0, n): 
        ele = int(input()) 

        lst.append(ele) # adding the element 

    print(lst) 


    Code #2: With handling exception


<!-- language: lang-phyton -->
    # try block to handle the exception 
    try: 
        my_list = [] 

        while True: 
            my_list.append(int(input())) 

    # if input is not-integer, just print the list 
    except: 
        print(my_list) 



    Code #3: Using map()


<!-- language: lang-phyton -->
    # number of elements 
    n = int(input("Enter number of elements : ")) 

    # Below line read inputs from user using map() function  
    a = list(map(int,input("\nEnter the numbers : ").strip().split()))[:n] 

    print("\nList is - ", a) 


    **Code #4: List of lists as input**


<!-- language: lang-phyton -->
    lst = [ ] 
    n = int(input("Enter number of elements : ")) 

    for i in range(0, n): 
        ele = [input(), int(input())] 
        lst.append(ele) 

    print(lst) 
0 голосов
/ 30 марта 2020

Это примерно так же оптимально, как и получается.

Если вы участвуете в соревнованиях по программированию, ваше узкое место будет не только I / 0, но и вашим общим временем выполнения python. Он по своей природе медленнее, чем C ++ / java, и некоторые онлайн-судьи не могут правильно объяснить это в установленные сроки.

...