Python 整数列表的格式化问题[TypeError:在字符串格式化期间未转换所有参数]

Python 整数列表的格式化问题[TypeError:在字符串格式化期间未转换所有参数],python,python-3.x,Python,Python 3.x,我必须在不改变偶数位置的情况下对奇数进行排序 而将零视为偶数 我试图用懒惰的方式解决这个问题,但在格式化问题上有一个奇怪的问题 请检查以下代码: def sort_array(source_array): result = source_array[:] odd = [] for i in result : if i % 2 == 0 or i == 0: odd.append('even_number') else

我必须在不改变偶数位置的情况下对奇数进行排序 而将零视为偶数

我试图用懒惰的方式解决这个问题,但在格式化问题上有一个奇怪的问题 请检查以下代码:

def sort_array(source_array):
    result = source_array[:]
    odd = []
    for i in result :
        if i % 2 == 0 or i == 0:
            odd.append('even_number')
        else:
            odd.append(i)
            result[i] = 'odd'

     # this is not a complete implementation we need to sort odd then replace it 
     # string 'even_number' kind off merge
    return source_array
#checking the out put below
print(sort_array([5, 3, 2, 8, 1, 4]))
print(sort_array([5, 3, 2, 8, 1, 4]) == [1, 3, 2, 8, 5, 4])
我得到了下面的输出

文件“sort\u偶数\u number.py”,第48行,在

print(sort_array([5, 3, 2, 8, 1, 4]))   File "sort_even_number.py", line 40, in sort_array

if i % 2 == 0 or i == 0: 
TypeError:在字符串格式化过程中并非所有参数都已转换


在python中,我们通常使用
i
变量作为索引。在这里,您迭代列表,这些是列表元素,而不是索引<代码>对于输入结果中的i:

因此,每个列表元素都是一个整数,但不是一个索引。碰巧它也是一个有效的索引,因为索引是整数

在某一点上,变量是

odd = [5, 3, 'even_number']
result = [5, 3, 2, 'odd', 1, 'odd']
您的脚本有一些问题。错误的来源是这样的<代码>结果[i]=“奇数” 不知道您是否有意这么做,但如果您在迭代iterable时不编辑iterable会更容易。而且不能对字符串进行模运算(
“奇数”


我想你会自己破解它的其余部分。

在修复它以迭代索引之后,我对此视而不见,谢谢你