列表理解中的 Python 字符串

问题描述 投票:0回答:6

我正在尝试获取该字符串作为结果:

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

来自下面的Python代码:

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

我该如何执行此操作,因为下面没有给出实际的字符串?

python
6个回答
47
投票

您需要像这样连接字符串:

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=
字符串。然后将该字符串列表连接在一起,并用空字符串分隔。


17
投票

在 Python 3.6 中你可以这样写:

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

11
投票

虽然第一个答案正在做预期的事情,但我会通过摆脱

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


6
投票

这是另一种方法,希望通过明确指定每个值的位置来使意图最清晰:

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[:-1]

return result

0
投票

另一种方式。使用 f 字符串和列表理解,既可读又可理解

标记 = [(97,64),(45,84)]

结果 = ''.join([f'&markers={value[0]},{value[1]}' 用于标记中的值])

© www.soinside.com 2019 - 2024. All rights reserved.