2016-04-07 26 views
-1

Ich mag würde ein großes String-Array erstellen, das würde wie folgt aussehen:Python: Erstellen von String-Array mit ganzen Zahlen

['x1_1', 'x1_1', 'x1_2', 'x1_2',................, 'x1_100', 'x1_100'] 

Gibt es eine einfache Art und Weise für das? Ich möchte jeden Wert in der Liste zweimal haben. Nicht einfach:

['x1_1', 'x1_2', ...,'x1_100'] 
+4

Bitte kräftigere enthalten. Willst du einfach etwas wie "x1 _ {}". Format (num) "' erstellen und n mal eine Liste erstellen? Noch wichtiger, zeige deinen eigenen Code für diesen Versuch und erkläre, was momentan nicht für dich funktioniert. – idjaw

Antwort

0

Neuere Version, die hoffentlich ist effizienter:

a = [ 'x1_{}'.format(x) for x in range(1,101)] 
a = zip(a,a) 
a = [i for j in a for i in j] 

a wird enthalten y unsere gewünschte Liste

ältere Version (nicht so effizient, aber noch funktioniert):

a = [ ['x1_{}'.format(x), 'x1_{}'.format(x)] for x in range(1,101)] 
b = [] 
for i in a: 
    b.extend(i) 

b Ihre gewünschte Liste

+0

@idjaw Genau darum habe ich gebeten. – Lanza

+0

Warum nicht? – Lanza

+0

@Lanza Es tut, Entschuldigung. Ich musste überprüfen, weil diese Art der Durchführung nicht ratsam ist. – idjaw

1
['x1_{}'.format(x) for x in range(1,101)] 

Das nennt man Liste Verständnis. Es ist das Äquivalent zu den folgenden:

array = [] 
for x in range(1, 101): 
    String = "x1_{}".format(x) 
    array.append(String) 

Edit: ja, wenn Sie genau 100 Saiten erzeugen wollen, dann würden Sie range(1,101) statt range(1,100) brauchen, weil range(a, b) eine Liste von Zahlen von a erzeugt up zu b-1.

Edit # 2:, wenn Sie diese Strings zweimal wiederholt werden soll, versuchen Sie dies:

array = [] 
for x in range(1, 101): 
    Strings = ("x1_{} ".format(x)*2).strip().split() 
    array.extend(Strings) 
+0

Die obere Grenze ist falsch Bitte fügen Sie einen kurzen Kommentar, warum es sein sollte "Bereich (1, 101)" – kay

+0

@Kay, done.Thanks für meinen Fehler – ForceBru

+3

'* 2/Streifen/Split 'scheint wie ein * sehr Umweg, was man mit 'array.append (String)' tun könnte, anstatt zweimal '' array.append (String) 'zweimal manuell zu verwenden, könnten wir eine Schleife verwenden - und die Schleife könnte ein Teil davon werden das listcomp, was zu '['x1 _ {}'. format (x) für x im Bereich (1, 101) für _ im Bereich (2)] 'führt, was mir hier als der One Obvious Way erscheint – DSM

1

Liste Mit Verständnis und String-Verkettung:

long_list = [ "x1_" + str(x) for x in range(1, 101) for y in range(2)] 
+0

This gibt OP nicht die Ausgabe, die sie verlangten –

+0

Ursprüngliche Frage wurde bearbeitet Vor diesen Änderungen war die Ausgabe die gleiche – Zafi