应该怎么改进啊,如果想遍历比较列表数字的话
在你的代码中 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]"
还有代码的格式注意一下,虽然不会报错,但注意一下,逗号后加空格,赋值运算符前后加空格,这是约定俗成的东西
加油!