首页 > 解决方案 > 在python中将rubik_solver.Move.Move转换为字符串

问题描述

我知道使用起来很简单,str()但这不起作用,因为我有某种奇怪的类型。

我正在使用该库rubik_solver来计算一个 rubiks 立方体求解,结果该库为我提供了一个数组,其中包含类型rubik_solver.Move.Move(查找我使用的type())。如何将此类型转换为字符串但将所有内容保留在数组中?我已经尝试过repr()str()但我收到错误消息:

TypeError: list indices must be integers or slices, not Move

代码简化:

from rubik_solver import utils

cube = "wwywybyroboobbgbrybgyorygbogobbgrwywrgryorrgorwgwwowyg" # My Cube

solving = utils.solve(cube, "Kociemba")  # Solve it

# Convert to string
for i in solving: 
    solving[i] = repr(solving[i]) #This creates the problem because the thing inside of the Array is not a String

标签: pythonstring

解决方案


如果要将 rubik_solver.Move.Move 类型对象的数组转换为字符串数组。尝试这个

moves_as_strings = [str(x) for x in solving]

这会将数组“solving”中的每个元素转换为字符串,并使用这些字符串创建一个新数组,最后将结果保存在数组“moves_as_strings”中。

正如 Ted 所提到的,您的代码的问题是,您正在使用 rubik_solver.Move.Move 对象而不是整数来索引数组。即求解[L'] 而不是求解[0]。

for循环直接在python中给你元素,如果你想要元素的索引,你可以使用枚举。您的代码应该是:

for i, move in enumerate(solving):
    solving[i] = str(move) 

推荐阅读