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

2024-10-03 17:18:07 发布

您现在位置:Python中文网/ 问答频道 /正文

你好,我想在一行中实例化5个对象,但我得到一个缩进错误:unindent不匹配任何外部缩进级别。这是我的源代码。如何解决?你知道吗

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"

Tags: 对象实例infor源代码错误range级别
2条回答

如何解决


以下是您的错误:

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,这显然是错误的。你知道吗

缩进错误正是如此;您的文件没有正确缩进。它与您的代码无关,您只需仔细检查以确保脚本文件中使用的空格或制表符的数量完全相同。你知道吗

相关问题 更多 >