2016-11-21 2 views
0

ip_address = '172.16.%d.%d' % (rack_number, box_number)hinzufügen Liste Indizes zu IP-Adresse dynamisch

Ich habe eine IP-Adresse. Die erste und zweite Ziffer sind statisch. 3. und 4. werden basierend auf Benutzereingaben geändert.

rack_number ist eine ganze Zahl. Dort gibt es kein Problem. Die Boxnummer wird jedoch zwischen 1-16 liegen. Ich verwende list dafür.

Können sagen, ich rack Nummer 3 und box_number2, 9

Als nächstes bekam ich zwei IP-Adressen erstellen müssen Befehle senden.

Also, IP-Adressen werden 172.16.3.2 und 172.16.3.9

Wie kann ich diese in funktioneller Art und Weise erreichen?

+1

Was meinst du mit funktional? Wie auch immer, machen Sie 'ip_address' einfach einen Container, wahrscheinlich eine Liste, die aus' rack_number' und der Liste 'box_number' aufgebaut ist. –

Antwort

2

A Liste Verständnis ist alles, was Sie brauchen, und die neuen Stil Formatierung es besser aussehen lässt:

ip_addresses = ['172.16.{}.{}'.format(rack, box) for box in box_numbers.split(', ')] 

Wenn box_numbers ist eine Liste, dann gibt es keine Notwendigkeit für Spaltung sein die nur gilt für String-Eingänge:

ip_addresses = ['172.16.{}.{}'.format(rack, box) for box in box_numbers] 
+0

Wenn box_numbers eine Liste ist. Ich sehe nicht die Notwendigkeit, darauf zu spalten. Nur ein Vorschlag. – SpiderWasp42

+0

@ SpiderWasp42 * basierend auf Benutzereingaben * schlägt vor, es ist eine Zeichenfolge –

+0

Ich denke, die Benutzereingaben beziehen sich sowohl auf die Rack-Nummer und die box_numbers. Aber ich hatte das Gefühl, dass, da das OP klar gesagt hat, dass box_numbers als eine Liste angenommen werden kann, eine Aufspaltung aus der Perspektive des Absendens einer Antwort nicht notwendig wäre. Ansonsten, erstklassige Antwort. Prost! – SpiderWasp42

Verwandte Themen