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.