Python-tekenreeks uit lijstbegrip

Ik probeer deze string als resultaat te krijgen:

"&markers=97,64&markers=45,84"

Van de Python-code hieronder:

markers = [(97,64),(45,84)]
result = ("&markers=%s" %x for x in markers)
return result

Hoe doe ik dit, aangezien het onderstaande me niet de daadwerkelijke string geeft?


Antwoord 1, autoriteit 100%

Je moet je string als volgt samenvoegen:

markers = [(97,64),(45,84)]
result = ''.join("&markers=%s" % ','.join(map(str, x)) for x in markers)
return result

UPDATE

Ik had aanvankelijk niet de sectie ','.join(map(str, x))daar om elke tuple in strings te veranderen. Dit verwerkt tupels van verschillende lengte, maar als je altijd precies 2 getallen hebt, zie je misschien de opmerking van gatto hieronder.

De uitleg van wat er aan de hand is, is dat we een lijst maken met één item voor elke tupel van markeringen, waarbij de tupels worden omgezet in door komma’s gescheiden tekenreeksen die we opmaken in de &markers=-tekenreeks. Deze lijst met strings wordt dan samengevoegd, gescheiden door een lege string.


Antwoord 2, autoriteit 28%

Hoewel het eerste antwoord doet wat er wordt verwacht, zou ik het een beetje “pythonischer” maken door mapen geneste uitdrukkingen te verwijderen:

def join(seq, sep=','):
    return sep.join(str(i) for i in seq)
result = ''.join('&markers=%s' % join(m) for m in markers)

(Als dat is voor URL’s zoals het lijkt, kun je ook een kijkje nemen op urllib.urlencode)


Antwoord 3, Autoriteit 19%

In Python 3.6 kunt u schrijven:

markers = [(97,64),(45,84)]
result = print(''.join(f'&markers={pair}' for pair in markers))
return result

Antwoord 4, Autoriteit 17%

Hier is een andere benadering die hopelijk de bedoeling is om de meest duidelijker de locatie van elk van uw waarden expliciet op te geven:

markers = [(97,64),(45,84)]
print ''.join('&markers=%s,%s' % pair for pair in markers)

Antwoord 5, Autoriteit 11%

Probeer een lege tekenreeks te maken die eraan toevoegt, het verwijderen van de laatste komma

resultaat = ”

for i in a:
    result+='&markers'
    for j in i:
    result += str(j) + ','
result = result[:len(result)-1]
return result

Other episodes