2013-04-01 6 views
10

Angenommen, ich habe eine Liste der Kartenfarben wie folgt:ein Zeichen zu jedem Element in einer Liste hinzufügen

suits = ["h","c", "d", "s"]

und ich möchte eine Art von Karte zu jedem Anzug hinzuzufügen, so dass mein Ergebnis ist so etwas wie

aces = ["ah","ac", "ad", "as"]

eine völlig neue Liste ohne neu zu erstellen und mit einer for Schleife eine einfache Möglichkeit, dies zu tun, ist es?

+1

Mögliches Duplikat [Anfügen die gleiche Zeichenfolge in eine Liste von Strings in Python] (https://stackoverflow.com/questions/ 2050637/Anfügen-the-same-String-to-a-list-of-Strings-in-Python) –

Antwort

20

Dies würde die ‚einfachste‘ Weg

>>> suits = ["h","c", "d", "s"] 
>>> aces = ["a" + suit for suit in suits] 
>>> aces 
['ah', 'ac', 'ad', 'as'] 
+0

genial, danke – fox

+1

auch, 'Liste ('a' + Anzug für Anzug in Anzügen)' –

+0

@BurhanKhalid Es sei denn, Aus irgendeinem Grund brauchst du ein 'Tupel' zB. 'Tupel ('a' + Anzug für Anzug in Anzügen)'. Ich würde das definitiv nicht für Listen verwenden. – jamylak

4

Eine weitere Alternative sein, die Kartenfunktion:

aces = map((lambda x: 'a' + x), suits) 
+3

Liste comp ist in der Regel * * bevorzugt, wenn Sie benötigen, 'lambda's in Ihrer Karte, in diesem Fall werden sie auch schneller – jamylak

+0

Vielen Dank für die Spitze! – ylabidi

+0

'[s für s in Anzügen]' ist kontraintuitiv. Sie werden gerade die gleiche Liste rekonstruieren. Lass es, wie es vorher war;) – jamylak

1

Wenn Sie etwas anderes als immer ‚a‘ hinzufügen möchten, können Sie versuchen, auch dies:

foo = ['h','c', 'd', 's'] 
bar = ['a','b','c','d'] 
baz = [x+y for x, y in zip(foo, bar)] 
>>> ['ha', 'cb', 'dc', 'sd'] 
+2

''' .join ([x, y])' == 'x + y' – jamylak

+0

wow. Ich fühle mich jetzt dumm. Vielen Dank! – bobrobbob

Verwandte Themen