我在python中有这个列表,看起来像这个
mylist=[10000010 00000000 00000000 00000000 0, 10000010 00000000 01000000 00000000 0,10000010 00000000 10000000 00000000 1,10000010 00000000 11000000 000000000 1]
和每个二进制数的斜杠数列表。
slashes=[14,13,14,14]
我需要将列表转换为斜杠表示法,并在范围之后使用链接编号。
mylist=[130.0.0.0/14 0, 130.0.64.0/13 0,......]
我正在努力寻找代码来转换列表。我可以创建所有空格句点,但是我不能将二进制更改为十进制。
答案 0 :(得分:1)
>>> mylist
['10000010 00000000 00000000 00000000 0', '10000010 00000000 01000000 00000000 0', '10000010 00000000 10000000 00000000 1', '10000010 00000000 11000000 000000000 1']
>>> slashes
[14, 13, 14, 14]
这是一种方式:
>>> ['.'.join(j[0][:4])+"/"+str(j[1])+" "+j[0][4] for j in list(zip([[str(int(i, 2)) for i in item.split()] for item in mylist], slashes))]
['130.0.0.0/14 0', '130.0.64.0/13 0', '130.0.128.0/14 1', '130.0.192.0/14 1']
或
>>> list(map(lambda x:'.'.join(x[0][:4])+"/"+str(x[1])+" "+x[0][4], list(zip([[str(int(i, 2)) for i in item.split()] for item in mylist], slashes))))
['130.0.0.0/14 0', '130.0.64.0/13 0', '130.0.128.0/14 1', '130.0.192.0/14 1']
以下是中间步骤中发生的事情
>>> [[str(int(i, 2)) for i in item.split()] for item in mylist]
[['130', '0', '0', '0', '0'], ['130', '0', '64', '0', '0'], ['130', '0', '128', '0', '1'], ['130', '0', '192', '0', '1']]
>>> list(zip([[str(int(i, 2)) for i in item.split()] for item in mylist], slashes))
[(['130', '0', '0', '0', '0'], 14), (['130', '0', '64', '0', '0'], 13), (['130', '0', '128', '0', '1'], 14), (['130', '0', '192', '0', '1'], 14)]
>>>