使用for循环实例化多个对象



你好,我想在一行中实例化Philosopher类的5个对象,但我得到了一个缩进错误:unident与任何外部缩进级别都不匹配。这是我的源代码。如何解决此问题?

forks=[threading.Lock() for i in range(5)]
philosopherNames={'Shubham','Nikhil','Soham','Khirade','Aditya'}
philosopher= [Philosopher(i, philosopherNames[i], forks[i%5], forks[(i+1)%5])  for i in range(5)]
random.seed(507129)
Philospher.running=True 
for p in philosopher:
    p.start()
time.sleep(100)
Philosopher.running=False
print "Now we are ending"

缩进错误正是这样;你的文件缩进不正确。这与您的代码无关,您只需要仔细检查,以确保脚本文件中使用的空格或制表符数量完全相同。

如何解决


这是您的错误:

philosopher= [Philosopher(i, philosopherNames[i], 
forks[i%5], forks[(i+1)%5])  for i in range(5)]
                            ^

只要去掉那个反斜杠,一切都会好起来的。

为什么会发生这种情况


philosopher列表是用列表理解创建的,这是Python的函数编程位。

你通常用制表符/空格来缩进循环(不过不要把两者混合),如下所示:

data = []
for x in range(2, 8):
    data.append(x**2) # indented this

使用列表理解,您不需要任何缩进:

data = [x**2 for x in range(2, 8)]

据我所知,您试图在列表理解中用反斜杠缩进for,这显然是错误的。

相关内容

  • 没有找到相关文章

最新更新