def convert(num):
num = str(num)
return '{}.{}.{}.{}'.format(num[:-9], num[-9:-6], num[-6:-3], num[-3:])
这是基于您的代码的简单单行转换器。 ;) num=str(num) 可以使用切片表示法 - 在发布元组列表时,您将数字发布为整数,而您的测试是在字符串上。
如果我们将切片包装在int() 中,我们可以摆脱过时的零。 (127.000.000.001 将变为 127.0.0.1):
def convert(num):
num = str(num)
return '{}.{}.{}.{}'.format(int(num[:-9]), int(num[-9:-6]), int(num[-6:-3]), int(num[-3:]))
现在,关于转换您的列表,让我们使用列表推导!这使得另一个班轮。
列表理解基本上是一个压缩的简单for 循环。
input_list = [(172031028000, 171031011000), (10010043016, 171031011111), (172031028011, 172031031121)]
output_list = [(convert(num1), convert(num2)) for num1, num2 in input_list]
print(output_list)
两个版本的工作如下所示:
>>> def convert(num):
... num = str(num)
... return '{}.{}.{}.{}'.format(num[:-9], num[-9:-6], num[-6:-3], num[-3:])
...
>>> input_list = [(172031028000, 171031011000), (10010043016, 171031011111), (172031028011, 172031031121)]
>>>
>>> output_list = [(convert(num1), convert(num2)) for num1, num2 in input_list]
>>> print(output_list)
[('172.031.028.000', '171.031.011.000'), ('10.010.043.016', '171.031.011.111'), ('172.031.028.011', '172.031.031.121')]
>>> def convert(num):
... num = str(num)
... return '{}.{}.{}.{}'.format(int(num[:-9]), int(num[-9:-6]), int(num[-6:-3]), int(num[-3:]))
...
>>> input_list = [(172031028000, 171031011000), (10010043016, 171031011111), (172031028011, 172031031121)]
>>>
>>> output_list = [(convert(num1), convert(num2)) for num1, num2 in input_list]
>>> print(output_list)
[('172.31.28.0', '171.31.11.0'), ('10.10.43.16', '171.31.11.111'), ('172.31.28.11', '172.31.31.121')]
>>>