Python указатель списка вне диапазона при преобразовании кортежа в список - PullRequest
0 голосов
/ 19 января 2020

При изучении Python я застрял в проблеме, где GeeksforGeeks говорит нам, что для преобразования кортежа в List мы можем использовать этот процесс variable_name = list(tuple_variable_name), но реализация этого процесса в моем примере кода не работает Кстати Я получаю ввод с помощью sys.stdin.read ()

Вот мой код, который я пытаюсь запустить в моем Pycharm

import sys,ast
input_str = sys.stdin.read()
input_list = ast.literal_eval(input_str)

def my_sort(a1):
    a = list(a1)
    for i in a:
        if (a[i]%5) < (a[i+1]% 5):
            temp = a[i]
            a[i] = a[i+1]
            a[i+1] = temp
    print(a)

my_sort(input_list)

Может ли кто-нибудь помочь мне в очистке мои сомнения или понимание этих концепций

Ответы [ 2 ]

0 голосов
/ 20 января 2020

Я подумал, что, возможно, стоит опубликовать простой, полный пример, поскольку обсуждение в комментариях приводит к куче новой информации, которая неочевидна в посте.

#str_in = input('Enter the numbers to sort: ')
str_in = '1,9,35,12,13,21,10'

nums = [int(elem) for elem in str_in.split(',')]

sorted_nums = sorted(nums, key=lambda x: x % 5)

print(sorted_nums)

Вывод:

[35, 10, 1, 21, 12, 13, 9]
0 голосов
/ 19 января 2020

Измените for i in a на for i in range(len(a)):

import sys,ast
input_str = sys.stdin.read()
input_list = ast.literal_eval(input_str)

def my_sort(a1):
    a = list(a1)
    for i in range(len(a)):
        if (a[i]%5) < (a[i+1]% 5):
            temp = a[i]
            a[i] = a[i+1]
            a[i+1] = temp
    print(a)

my_sort(input_list)

for i in a зацикливается на каждом элементе в a, а for i in range(len(a)) - на каждом индексе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...