我正在尝试获取该字符串作为结果:
"&markers=97,64&markers=45,84"
来自下面的Python代码:
markers = [(97,64),(45,84)]
result = ("&markers=%s" %x for x in markers)
return result
我该如何执行此操作,因为下面没有给出实际的字符串?
您需要像这样连接字符串:
markers = [(97,64),(45,84)]
result = ''.join("&markers=%s" % ','.join(map(str, x)) for x in markers)
return result
更新
我最初并没有
','.join(map(str, x))
部分将每个元组转换为字符串。这可以处理不同长度的元组,但如果您始终只有 2 个数字,您可能会在下面看到 gatto 的评论。
对所发生事情的解释是,我们为标记中的每个元组创建一个列表,将元组转换为逗号分隔的字符串,然后将其格式化为
&markers=
字符串。然后将该字符串列表连接在一起,并用空字符串分隔。
在 Python 3.6 中你可以这样写:
markers = [(97,64),(45,84)]
result = ''.join(f'&markers={pair}' for pair in markers)
return result
虽然第一个答案正在做预期的事情,但我会通过摆脱
map
和嵌套表达式使其变得更加“Pythonic”:
def join(seq, sep=','):
return sep.join(str(i) for i in seq)
result = ''.join('&markers=%s' % join(m) for m in markers)
urllib.urlencode
)
这是另一种方法,希望通过明确指定每个值的位置来使意图最清晰:
markers = [(97,64),(45,84)]
print ''.join('&markers=%s,%s' % pair for pair in markers)
尝试创建一个空字符串并添加到其中,然后删除最后一个逗号
result = ''
for i in a:
result+='&markers'
for j in i:
result += str(j) + ','
result = result[:-1]
return result
另一种方式。使用 f 字符串和列表理解,既可读又可理解
标记 = [(97,64),(45,84)]
结果 = ''.join([f'&markers={value[0]},{value[1]}' 用于标记中的值])