繁体   English   中英

Python 3.x-无法修复错误:“切片索引必须为整数或None或具有__index__方法” +更多

[英]Python 3.x - Cannot fix error: “slice indices must be integers or None or have an __index__ method” + more

我正在研究一个复制Eratosthenes筛网的类,并且已经得到标题中给出的错误消息。 下面是我的代码,接下来有更多问题。

    class Sieve:

def __init__(self, max):
    if max < 0:
        raise RuntimeError
    else:
        self.numbers = [([False] * 2) + ([True] * (max - 1))]

def findPrimes(self):
    for i in self.numbers:
        if self.numbers:
            for j in self.numbers[i:]:
                if j % i == 0:
                    self.numbers[j] = False
                else:
                    None
        else:
            None

def howMany(self):            ##Must use reduce
    reduce((lambda i: True if numbers else False), self.numbers, self.numbers[2:])

def toList(self):
    T = [L[i] for i in self.numbers]
    return print(self.numbers)

因此,在函数findPrimes(self)中,特别是在第14行,我得到了标题中描述的错误消息。 问题的根源到底是什么?

另外,我想问一些关于我的方法的问题。 在findPrimes中,我试图访问列表中的每个元素。 如果为真,我想获取索引号(i)并访问所有其他倍数为i(i,i + i,i + i + i等)的索引。 我还没有完全测试过,但是我觉得我的语法是错误的。 任何帮助表示赞赏。

最后,我需要在howMany方法中使用reduce函数,以便确定列表中有多少个元素为真,并返回该数字。 再次感谢您对该主题的任何了解。

谢谢大家 :)

在python中, for i in self.numbers类似于Java增强的For循环,其中For循环将遍历列表,所以i将是列表项(在您的情况下为True / False )而不是索引。

如果要访问列表索引,请利用for i in range(len(self.numbers))中的i然后i0循环到(length of list - 1)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM