Python-将类似坐标的字符串附加到列表中

时间:2015-10-30 19:46:59

标签: python algorithm

我试图将一个类似坐标的值附加到列表中。以下是我的代码到目前为止,但当我需要它返回["(0,1),(1,1),(1,2)"]时它会返回[(0,1),(1,1),(1,2)]

def read_coords(s):
    coords_s = []
    row = 0
    split_coords = s.split('\n')
    for i in split_coords:
        i = list(i)
        for z in range(len(i)):
            indiv_coord = []
            if i[z] == 'O':
                coords_s.append('('+str(row)+','+str(z)+')')
                row += 1            
    return coords_s

我使用的测试用例是:

应该返回的

read_coords("O..\n.OO\n") - > [(0,0), (1,1), (1,2)] o read_coords("\n\nO..\n.OO\n\n")→`[(0,0),(1,1),(1,2)]

忽略空行。

read_coords(".....\n.....\n")[]

1 个答案:

答案 0 :(得分:3)

您无法创建您认为自己的数据结构。

这一行你在这里:

coords_s.append('('+str(row)+','+str(z)+')')

你在做什么实际上是在你的列表中追加一个字符串为"(row,z)"。

您所指的结构称为tuple

您应该更改代码以将元组实际附加到列表中,并且类型转换为str也很可能也是不必要的。所以,你可以这样做:

coords_s.append((row, z))