Строка Python из понимания списка

Я пытаюсь получить эту строку в результате:

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

Из приведенного ниже кода Python:

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

Как это сделать, поскольку нижеследующее не дает мне фактическую строку?

Ответ 1

Вам нужно присоединиться к вашей строке следующим образом:

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

UPDATE

Вначале у меня не было раздела ','.join(map(str, x)), чтобы превратить каждый кортеж в строки. Это обрабатывает различные кортежи длины, но если вы всегда будете иметь ровно 2 числа, вы можете увидеть комментарий gatto ниже.

Объяснение того, что происходит, состоит в том, что мы делаем список с одним элементом для каждого кортежа из маркеров, превращая кортежи в строки, разделенные запятыми, которые мы форматируем в строку &markers=. Затем этот список строк объединяется вместе с пустой строкой.

Ответ 2

В то время как первый ответ делает то, что ожидается, я бы сделал его немного более "pythonic", избавившись от map и вложенных выражений:

def join(seq, sep=','):
    return sep.join(str(i) for i in seq)

result = ''.join('&markers=%s' % join(m) for m in markers)

(если это похоже на URL-адреса, вы также можете взглянуть на urllib.urlencode)

Ответ 3

Вот еще один подход, который, как мы надеемся, делает его наиболее ясным, указав местоположение каждого из ваших значений явно:

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

Ответ 4

Попробуйте создать пустую строку, добавив к ней, затем удалив последнюю запятую

result = ''

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

return result