2024-04-25 14:20:58 发布
网友
您可以拆分空格上的字符串,然后压缩拆分列表中的备用元素。你知道吗
s = "0 1 2 3 4 5" x = s.split(); print(list(zip(x[::2], x[1::2])))
切片的第三个参数是步幅。因此,它从列表(0、2、4等)中选取第二个元素,第二个片段也是一个步长为2但从索引1(1、3、5等)开始的片段。你知道吗
list调用只用于强制立即计算print语句。如果您稍后将迭代返回值zip,则不需要使用它。你知道吗
list
zip
上述输出tuples。如果你想把它们变成Point对象。你知道吗
tuples
Point
points = [Point(*map(float,t)) for t in zip(x[::2], x[1::2])] for p in points: print('%s' % p, end='') print()
它看起来有点神奇,但本质上只是在循环中用每对值调用Point构造函数。map(float, t)部分将两个坐标转换为浮点值(我从您的__str__方法中推断出来),然后*将元组分解为构造函数的2个值。你知道吗
map(float, t)
__str__
*
输出为
(0.000000, 1.000000)(2.000000, 3.000000)(4.000000, 5.000000)
你没有要求所有的尾随0,但是你的__str__正在打印浮动,所以我就这样留下了。你知道吗
在您的示例中,您还尝试使用print(points)直接打印列表本身。如果您希望每个列表项在这种情况下自定义打印本身,那么应该定义__repr__函数。你知道吗
print(points)
__repr__
points = [(tokens[i], tokens[i+1]) for i in range (0, len(tokens), 2)]
这将返回所需元组的列表。删除for循环;它包含在这个语句中(称为“列表理解”)。你知道吗
您可能会注意到点坐标仍然是字符串。您可能需要将元组中的两个项转换为int。你知道吗
您可以拆分空格上的字符串,然后压缩拆分列表中的备用元素。你知道吗
切片的第三个参数是步幅。因此,它从列表(0、2、4等)中选取第二个元素,第二个片段也是一个步长为2但从索引1(1、3、5等)开始的片段。你知道吗
list
调用只用于强制立即计算print语句。如果您稍后将迭代返回值zip
,则不需要使用它。你知道吗上述输出
tuples
。如果你想把它们变成Point
对象。你知道吗它看起来有点神奇,但本质上只是在循环中用每对值调用
Point
构造函数。map(float, t)
部分将两个坐标转换为浮点值(我从您的__str__
方法中推断出来),然后*
将元组分解为构造函数的2个值。你知道吗输出为
你没有要求所有的尾随0,但是你的
__str__
正在打印浮动,所以我就这样留下了。你知道吗在您的示例中,您还尝试使用
print(points)
直接打印列表本身。如果您希望每个列表项在这种情况下自定义打印本身,那么应该定义__repr__
函数。你知道吗这将返回所需元组的列表。删除for循环;它包含在这个语句中(称为“列表理解”)。你知道吗
您可能会注意到点坐标仍然是字符串。您可能需要将元组中的两个项转换为int。你知道吗
相关问题 更多 >
编程相关推荐