这是一个Python2.x函数,用于处理具有x,y坐标的序列;请注意,参数ints的类型为map:
def IntsToPoints(ints):
result = []
for i in range(0, len(ints), 2):
result.append(Point(ints[i], ints[i+1]))
return result
我正在将其转换为Python3.x,映射对象不再是可下标的。这就是我目前解决问题的方法:
def IntsToPoints(ints):
result = []
for i, myint in zip(range(len(list(ints))), ints):
if i%2 == 0: x = myint
else: result.append(Point(x, myint))
return result
有谁有更好的主意吗
经典的python习惯用法是
zip(*[iter(...)]*2)
,它适用于任何iterable:由于您正在传递
map
,它已经是一个迭代器,因此可以省略iter
:或者更简单一点
但是我会保留它,以使函数更通用(有一天您可能希望传递一个
list
,而不是一个map
)相关问题 更多 >
编程相关推荐