J'ai une liste d'avoir des tuples. Je veux mettre un point décimal entre tous les 3 chiffres de tuple à partir de droite.
entrée: p> sortie: p> [(172.031.028.000, 171.031.011.000), (10.010.043.016, 171.031.011.111), (172.031.028.011, 172.031.031.121)]
5 Réponses :
C'est une approche.
sortie: strong> p>
SE ITERER sur chaque tuple, puis chaque IP. Vous avez les sections à droite pour la propriété intellectuelle afin d'ajouter à une liste temporaire que vous lancerez vers TUPLE (comme les tuples sont immuables afin que vous ne puissiez pas modifier ce que vous avez déjà)
Une version possible avec impression: p> RE code> Module:
Ceci est ma prise:
data = [(172031028000, 171031011000), (10010043016, 171031011111), (172031028011, 172031031121)]
# Add the dots to the IP
def proc_ip(a: int):
a = str(a)
return f'{a[:3]}.{a[3:6]}.{a[6:9]}.{a[9:]}'
# Add the dots to both ips on the tuple
def proc_tuple(a: tuple):
return (proc_ip(a[0]), proc_ip(a[1]))
# Process each tuple
result = [proc_tuple(elem) for elem in data]
print(result)
>>> 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')]
>>>
Merci à tous pour une réponse rapide. Toutes les solutions sont utiles.