将坐标列表转换为元组列表

时间:2016-05-28 11:55:07

标签: python list for-loop tuples coordinates

我试图将坐标列表转换为元组列表:

从:

a_list = ['56,78','72,67','55,66']

为:

list_of_tuples = [(56,78),(72,67),(55,66)]

我尝试在for循环中将a_list中的每个元素转换为元组,但输出格式为:

list_of_tuples = [('5', '6', '7', '8'), ('7', '2', '6', '7'), ('5', '5', '6', '6')] 

对于我在这里做错的任何帮助都将不胜感激。

编辑:修正了预期的输出,坐标和元组之间没有空格。

3 个答案:

答案 0 :(得分:4)

您可以使用列表理解:

result = [tuple(map(int,element.split(','))) for element in a_list]

编辑:@ Lol4t0的短版本

如上所述,元素之间的空格来自打印列表。数据结构中没有实际的“空格”。但是,如果您希望打印列表而没有任何空格,则可以执行以下操作:

print str(result).replace(" ","")

答案 1 :(得分:1)

使用列表理解,split项目,并使用int将每个子项目转换为map

>>> result = [map(int, item.split(',')) for item in a_list ]
>>> result
[(56, 78), (72, 67), (55,66)]

在python 3.x上,您应该将map对象转换为tuple

>>> result = [tuple(map(int, item.split(','))) for item in a_list ]

答案 2 :(得分:1)

很好很简单,这里是

    a_list = ['56,78','72,67','55,66']

    result = []
    for coord in a_list:
        result.append(tuple([int(x) for x in coord.split(',')]))

    print(str(result).replace(" ", ""))

    # Output

    [(56,78),(72,67),(55,66)]

我想到的第一种方式是:

    a_list = ['56,78','72,67','55,66']

    int_list = []
    for coord in a_list:
        for x in coord.split(','):
            int_list.append(int(x))

    result = []
    for i in range(0, len(int_list), 2):
        result.append((int_list[i], int_list[i+1]))

    print(str(result).replace(" ", ""))

    # Output

    [(56,78),(72,67),(55,66)]

这种方式也很好,如果你的新手python并希望用更多的程序解决这类问题。我的心态是将所有坐标放入一个列表中,并在每个第二个整数中将它们分组。

我希望这会有所帮助。