Python 将元组连接到字符串的干净方法
是否有一种更干净、更具Python风格的方法来对元组值列表执行以下操作:Python 将元组连接到字符串的干净方法,python,string,tuples,Python,String,Tuples,是否有一种更干净、更具Python风格的方法来对元组值列表执行以下操作: list_stops = [(-122.4079,37.78356), (-122.404,37.782)] str_join = '' for i in list_stops: coords_str = str(i[0]) + ',' + str(i[1]) + ';' str_join = str_join + coords_str final_str = str_join
list_stops = [(-122.4079,37.78356),
(-122.404,37.782)]
str_join = ''
for i in list_stops:
coords_str = str(i[0]) + ',' + str(i[1]) + ';'
str_join = str_join + coords_str
final_str = str_join[:-1]
我需要获得一个连接所有元组值的字符串,但这些对需要用“;”分隔签名
我的“final_str
”的输出示例:
-122.4079,37.78356;-122.404,37.782
链2
str.join
,注意将值转换为字符串所需的map
:
list_stops = [(-122.4079,37.78356),
(-122.404,37.782)]
";".join(",".join(map(str, x)) for x in list_stops)
'-122.4079,37.78356;-122.404,37.782'
如果它们总是成对的:
list_stops = [(-122.4079, 37.78356), (-122.404, 37.782)]
final_str = ';'.join('{},{}'.format(p1, p2) for p1, p2 in list_stops)
print final_str
给你:
-122.4079,37.78356;-122.404,37.782
如果您需要确保只使用对,如果给出的参数数量不正确,这种方法将停止,并出现ValueError
,这可能很有用。您甚至可以尝试以下列表理解:
';'.join([','.join([str(x) for x in y]) for y in list_stops])
o/p: '-122.4079,37.78356;-122.404,37.782
#Explanation
#1st i make something like ['-122.4079,37.78356', '-122.404,37.782'] by
#all inner tuples become ',' joined
#then ';' join those valuse
分为两个步骤以获得更清晰的信息
list_1 = [','.join([str(x) for x in y]) for y in list_stops]
#['-122.4079,37.78356', '-122.404,37.782']
req_string = ';'.join(list_1)
#'-122.4079,37.78356;-122.404,37.782'
为什么您需要map
功能?如果使用str(x)
,这难道不可能吗?@Praind试试看str(x)
返回整个元组的字符串,例如'(-122.404,37.782)
。请注意';'。join([',')。join([str(x)代表y中的x])代表y中的列表_stops])
比';'更快、更有效。join(“,”.join(str(x)代表y中的x)代表y中的y)列表_停止)
因为.join
必须扫描iterable及其连接两次:第一次扫描确定输出字符串的大小,第二次扫描生成字符串。因此,如果您将生成器传递给它,它必须先将生成器运行到列表中,然后才能执行扫描。谢谢您的帮助!:)