Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将元组连接到字符串的干净方法_Python_String_Tuples - Fatal编程技术网

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

是否有一种更干净、更具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[:-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及其连接两次:第一次扫描确定输出字符串的大小,第二次扫描生成字符串。因此,如果您将生成器传递给它,它必须先将生成器运行到列表中,然后才能执行扫描。谢谢您的帮助!:)