将元组转换为列表时,Python列表索引超出范围

问题描述 投票:0回答:2

[在研究Python时,我陷入了一个问题,即GeeksforGeeks告诉我们,要将元组转换为List,我们可以使用此过程variable_name = list(tuple_variable_name),但是对我的示例代码实现此过程不起作用BTW我得到了使用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)

任何人都可以帮助我消除疑问或理解这些概念

python python-3.x pycharm
2个回答
0
投票

我认为可能值得发布一个简单而完整的示例,因为评论中的讨论会导致大量新信息,而这些新信息在帖子中并不明显。

#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]

-1
投票

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))遍历每个索引。

© www.soinside.com 2019 - 2024. All rights reserved.