Python simplify code of list comprehension
请看下面的代码:
1 2 3 4 5 6 7
| def __init__(self):
self.job = Job('today', 10)
def createList(self):
return [self.job(date=self.date,
selary=cv.salary)
for cv in self.cvItems] |
我不理解createlist方法的语法。你能用更简单的方式为Java开发人员理解吗?
- 为什么Python开发者要编写一个Java开发者可以理解的代码?它是python,您的代码在语法上应该与python相关(它应该是python)
- 你没有问过并删除过一些关于列表理解的问题吗?
- MoinuddinQuadri,所以Java开发人员想成为Python开发人员,将理解这种方法的语法。
- @卡斯蒂斯是的,我之前也问过类似的问题,但我描述得很糟糕,不得不删掉。我希望这次我做对了。我仍然不懂这种语法,也找不到一个好的例子来解释它。所以我希望能在这里得到答案。
如果你一开始没有得到它,就把它转换成一个for循环。
1 2 3 4
| result = []
for cv in self.cvItems:
result.append(self.job(date=self.date, selary=cv.selary))
return result |
无关:这是拼写工资。
相比:
1 2 3 4 5 6 7
| [self.job(date=self.date, selary=cv.selary) for cv in self.cvItems]
# (1) (2) (3)
for cv in self.cvItems:
# (2) (3)
result.append(self.job(date=self.date, selary=cv.selary))
# (1) |
号
- 所以在Python中,允许您从对象的实例调用对象的构造函数?我本来希望看到的是Job(…)而不是Self.Job(…)
- @伊利亚·加兹曼不可以,你不能。埃多克斯1〔0〕必须是可调用的。因为我没有Job的任何实现细节,所以我只能这样说。无论如何,它与您所询问的列表理解语法并不真正相关;)
- 这就是我提供init方法的原因,所以您可以看到如何初始化作业,很明显作业是来自作业实例的对象。
- @伊利亚·加兹曼当然可以,但埃多克斯1〔2〕还是可以打电话的。再说一次:你没有提供任何东西让我知道什么是Job,只是self.job是一个。再说一次:Job的细节与您提出的关于list-comp语法的问题无关。
- 哦,哇,所以你是说,即使使用我拥有的in it方法(让我们将其视为这个问题上下文的一部分),并且假设没有人重写self.job,createList中的语法仍然有效?如果答案是肯定的(就像在我的项目中,我正试图弄明白),你能给我解释一下它是怎样的吗?
- @Ilya_Gazman Job实例本身必须是可调用的
- 非常感谢你,这是我不理解所谓的事情的一部分。谢谢您!