Concat每4个字符串列表?

时间:2012-05-05 08:51:35

标签: python string list ip

我有这个清单:

['192', '168', '0', '1', '80', '192', '168', '0', '2', '8080']...

我想得到这个清单:

['192.168.0.1:80', '192.168.0.2:8080']...

这样做的最佳方式是什么?

使用rangelist pop?

使用list切片?

2 个答案:

答案 0 :(得分:5)

>>> data = ['192', '168', '0', '1', '80', '192', '168', '0', '2', '8080']
>>> ['{}.{}.{}.{}:{}'.format(*x) for x in zip(*[iter(data)]*5)]
['192.168.0.1:80', '192.168.0.2:8080']

使用starmap

>>> from itertools import starmap
>>> list(starmap('{}.{}.{}.{}:{}'.format,zip(*[iter(data)]*5)))
['192.168.0.1:80', '192.168.0.2:8080']

答案 1 :(得分:2)

这是一种方法,可能是也可能不是"最好的"方式:

>>> a = ['192', '168', '0', '1', '80', '192', '168', '0', '2', '8080']
>>> [":".join([".".join(a[x:x+4]), a[x+4]]) for x in range(0, len(a), 5)]
['192.168.0.1:80', '192.168.0.2:8080']