python循环体问题报错

img
应该怎么改进啊,如果想遍历比较列表数字的话

在你的代码中 i 是一个整数变量,所以它是没有 i[n] 这种列表访问的写法的

182行获取元素是


if li[n]==li[m]:

遍历的i是数字,li才是列表,你代码写错了

没太懂啥意思,遍历就

li =[13,13,21,43,35]
for i in li:
    print(i)

报错原因 int 类型没有下标

li = [13, 13, 21, 43, 35, 43, 35]
for i in set(li):
    count = 0
    for m in li:
        if i == m:
            count += 1
    if count == 1:
        print(i)

我们可以获取列表所有元素分别出现的次数,然后设定限制条件,找到目标元素。因为我看到你那里是找出只出现过一次的,其它元素至少出现两次,所以当某个元素出现的次数大于1时,本次循环结束,进入下一次循环,若次数为一,则返回该元素。
list = [13, 13, 21, 43, 35, 43, 35]
for k in range(len(list)):
if list.count(list[k]) % 2 == 0:
continue
else:
if list.count(list[k]) > 1:
continue
else:
print(list[k])

用Counter函数

from collections import Counter
list = [13, 13, 21, 43, 35, 43, 35]
print([k for k, v in Counter(list).items() if v==1])

    li = [13, 13, 21, 43, 35, 43, 35]
    for i in li:
        if li.count(i)==1:
            print(i)

你的range函数可能使用方法不对,li列表里有7个元素,你用range(0,6)只能遍历6个元素。
另外,你的count赋值的位置不太好,因为每一次第三层for循环都会把count的值直接重新赋为0,即使你count加1了也没用。而且在第一层循环下,也就是对每一个i来说的最后一次循环(比如你用range(0,6)会有36次小循环),n与m都是相等的,这样,对于第一层循环中的每一个i,你得到的count值都为1。这个时候最后那个if判断就没用了,这段函数的代码功能就是简单的把li列表里的元素挨个打印了一遍。(前提是按照@Leleprogrammer说的把你的182行代码改正)。最后你可以重新考虑以下count赋值语句的位置。

i不是个列表,您是不是想写"li[i]"
还有代码的格式注意一下,虽然不会报错,但注意一下,逗号后加空格,赋值运算符前后加空格,这是约定俗成的东西
加油!