有没有办法将字符串的1个元素转换为所需的多个

问题描述

https://code.sololearn.com/cRcr0h9XTJt0/?ref=app

     arr =["(2,2),(2,2)"]
     print(len(arr))
     outputrequired = []
     outputrequired = [[2,2],[2,2]]
     print(len(outputrequired)
  1. 在这里我需要将“ arr”隐瞒为“ required output”

解决方法

您的arr是一个只有一个元素的列表:一个字符串。使用eval()进行解析似乎是一个不错的选择,但为了安全地进行解析,您应该使用ast.literal_eval

现在,如果我们这样做:

from ast import literal_eval

arr = ["(2,2),(2,2)"]
evaluated = literal_eval(arr)
print(evaluated)

...我们收到一个错误:

ValueError: malformed node or string: ['(2,2)']

arr不是字符串,但是将arr转换为字符串并将其传递给literal_eval是可行的,但是它什么也没做,只是返回相同的{ {1}}

我们需要做的是将arr的第一个(也是在这种情况下)转换为元组列表,而不是当前的字符串。

因此,我们将arr传递给arr[0],它返回以下内容:

literal_eval
from ast import literal_eval

arr = ["(2,2)"]
evaluated = literal_eval(arr[0])
print(evaluated)

tuple个元组。我们越来越近了。要将元组转换为字符串,我们只需执行以下操作:

((2,2))

我们的元组列表存储在变量list(tuple) 中,因此要执行以下操作将其转换为列表:

evaluated

...返回以下内容:

list(evaluated)

甚至更近。要将[(2,2)] 中的元组转换为列表,我们可以使用列表理解:

evaluated

这基本上翻译为:

outputrequired = [list(t) for t in evaluated]

这只是一种更有效的方法。

无论如何,这是outputrequired = [] for t in evaluated: outputrequired.append(list(t)) 的结果:

outputrequired

列表列表。

完整代码:

[[2,2],[2,2]]

Run and edit this code online