在复杂语句上使用列表理解的最佳方法

时间:2018-07-21 22:36:21

标签: python list-comprehension

我有一条要放入列表中的python行fabric.connection.Connection("192.168.3.100", port=22, user="pi", connect_kwargs = {"password" : "Raspberry"}),理想情况下使用列表推导来增加列表中每个元素的IP地址的最后一个数字。

例如,我希望列表看起来像这样(当然,其中还有更多元素):

LIST_A = [("192.168.3.100", port=22, user="pi", connect_kwargs = {"password" : "Raspberry"}), ("192.168.3.101", port=22, user="pi", connect_kwargs = {"password" : "Raspberry"}), ("192.168.3.102", port=22, user="pi", connect_kwargs = {"password" : "Raspberry"})]

请注意列表中每个项目的IP如何增加。

是否可以通过列表理解来做到这一点?还是需要一遍又一遍地复制/粘贴?

我在想一些类似的事情

LIST_A = [fabric.connection.Connection("192.168.3.{}", port=22, user="pi", connect_kwargs = {"password" : "Raspberry"}).format(x + 1) for x in range(40)]

但是那不起作用,因为该语句中有各种各样的数据类型。

谢谢!

1 个答案:

答案 0 :(得分:2)

您可以使用zfillstr.format

r = ["192.168.3.1{}".format(str(i).zfill(2)) for i in range(3)]
new_r = [fabric.connection.Connection(i, port=22, user="pi", connect_kwargs = {"password" : "Raspberry"}) for i in r]
print(r)

输出:

['192.168.3.100', '192.168.3.101', '192.168.3.102']