我有一个格式为的列表
[[0,0], [1,0], [1,1], [0,1], [0,0]]
现在我想将其转换为格式"((0 0,1 0,1 1,0 1,0 0))"
我尝试了一些解决方案,但它不起作用,即
def conv(l):
return str(map(lambda a: " ".join(a), l))
Run Code Online (Sandbox Code Playgroud)
我的子列表将始终有 2 个点,即 x,y,主列表可以有很多点,即 [[x,y],[x,y],......]
','.join(f'{x} {y}' for (x,y) in l)
Run Code Online (Sandbox Code Playgroud)
您需要合并两个流程。首先,您需要将每对坐标解压缩为一个字符串,就像0 1这[0, 1]可以使用连接来完成,但是,IMO,简单地使用格式化字符串更容易、更清晰,这就是用变量的值f'{x} {y}'替换{x}and的方法和。{y}xy
其次,您需要从包含列表中读取这些对l,这可以使用理解来完成。在你的情况下,你想边走边打开包装,你可以这样做for (x, y) in l。然后,您可以将它们与 a 结合起来,join以在所需的坐标之间引入逗号。
因此,包括您的括号,我们最终得到一个函数定义:
def conv(l):
return f"(({','.join(f'{x} {y}' for (x,y) in l)}))"
Run Code Online (Sandbox Code Playgroud)