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

3
我正在尝试将一系列坐标转换为元组列表:
从:
a_list = ['56,78','72,67','55,66']

to:

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

我尝试使用for-in循环将a_list中的每个元素转换为一个元组,但输出结果的形式如下:
list_of_tuples = [('5', '6', '7', '8'), ('7', '2', '6', '7'), ('5', '5', '6', '6')] 

任何对我在这里做错的地方提供帮助都将不胜感激。
编辑:修正了预期输出,坐标和元组之间没有空格。
3个回答

4
你可以使用列表推导式:
```python ```
result = [tuple(map(int,element.split(','))) for element in a_list]

编辑:@Lol4t0提供了更简短的版本

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

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

1
仍然太长:[tuple(map(int, e.split(','))) for e in a_list] - Lol4t0
打印列表时,空格会自动设置。您可以打印您期望的输出列表list_of_tuples,以了解我的意思。它仍将打印[(56, 78), (72, 67), (55, 66)] - Keiwan

1
使用列表推导式,对项目进行split,并使用map将每个子项转换为int
>>> 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 ]

空格只是为了可读性。在这种情况下,它们并没有实际意义。 - Moses Koledoye
好的,谢谢。我们的讲师总是强调空格,我想他影响了我。 - user6394303

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并希望通过更多过程来解决此类问题的人也很好。我的思路是将所有坐标放入列表中,并在每个第二个整数处将它们分成一对。

我希望这可以帮到你。


@user6394303,我修改了最后一行代码以去除空格。这样的编辑是否正确? - RoadRunner
不用担心,如果你喜欢这个答案,请给它点赞以便未来的用户参考。 - RoadRunner
我尝试过了,但是还没有积累到 15 的声望 :( - user6394303

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接