Ich habe eine Liste von ganzen Zahlen und möchte sie in einer Schleife verketten.

Das habe ich bisher

a = [3, 4, 6]

temp = []
for i in a:
    query = 'Case:' + str(i)
    temp.append(query)

print(' OR '.join(temp))

>>> Case:3 OR Case:4 OR Case:6 

Gibt es einen besseren Weg, dies zu schreiben?

1
Cryssie 7 Aug. 2015 im 05:13

4 Antworten

Beste Antwort

Ja, Sie können den Generatorausdruck und str.join verwenden.

' OR '.join('Case: {}'.format(i) for i in a)

Beispiel / Demo -

>>> a = [3, 4, 6]
>>> ' OR '.join('Case: {}'.format(i) for i in a)
'Case: 3 OR Case: 4 OR Case: 6'
2
Anand S Kumar 7 Aug. 2015 im 02:20

Vervollständigung der Idee von @Joshua K zur Verwendung von Karte und Lambda (obwohl ich denke, dass das Listenverständnis eine bessere Lösung ist):

>>> a = [3, 4, 6]
>>> 'OR '.join(map(lambda i: 'Case:' + str(i) + ' ', a))
Case:3 OR Case:4 OR Case:6
0
Thane Plummer 7 Aug. 2015 im 14:20

Sie können auch Karten- und Lambda-Ausdrücke verwenden:

temp = map(lambda x: 'Case: '+str(x), a)
2
Joshua K 7 Aug. 2015 im 02:30

Sie könnten auch ein Verständnis verwenden:

>>> a = [3, 4, 6]
>>> ' OR '.join([ "Case " + str(x) for x in a ])
'Case 3 OR Case 4 OR Case 6'
1
Bacon 10 Aug. 2015 im 01:23