我试图将坐标列表转换为元组列表:
从:
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')]
对于我在这里做错的任何帮助都将不胜感激。
编辑:修正了预期的输出,坐标和元组之间没有空格。
答案 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并希望用更多的程序解决这类问题。我的心态是将所有坐标放入一个列表中,并在每个第二个整数中将它们分组。
我希望这会有所帮助。