Python:元组赋值,同时转换类型

我正在从字符串读取tab分隔值到像这样的对象:

class Node(rect):
    def __init__(self, line):
        (self.id, self.x1, self.y1, self.x2, self.y2) = line.split('t')

这工作正常,但说我想将这些从字符串line读取的x和y坐标转换为浮点数。 什么是最Python的方式来做到这一点? 我想像一样

(self.id, float(self.x1), float(self.y1), float(self.x2), float(self.y2)) = line.split('t')

这当然不起作用。 有没有一个优雅的方式来做到这一点,或者我必须像以后手动转换self.x1 = float(self.x1)


你不能在一行上做到这一点,但你可以做一些事情:

self.id, *rest = line.split('t')
self.x1, self.y1, self.x2, self.y2 = map(float, rest)

如果你在python2上,那么你必须这样做:

splitted = line.split('t')
self.id = splitted.pop(0)
self.x1, self.y1, self.x2, self.y2 = map(float, splitted)

我多次问过这个问题。

我想出的最好办法是定义一个输入转换函数列表,然后用参数压缩它们:

identity = lambda x: x
input_conversion = [identity, float, float, float, float]
self.id, self.x1, self.y1, self.x2, self.y2 = (
  f(x) for f, x in zip(input_conversion, line.split('t')))

你不能做任何你想做的事情。 但也有选择。

在这种情况下,您试图将除第一个值之外的所有内容都转换为float 。 你可以这样做:

bits = line.split('t')
self.id = bits.pop()
self.x1, self.y1, self.x2, self.y2 = map(float, bits)
链接地址: http://www.djcxy.com/p/53559.html

上一篇: Python: tuple assignment while at same time converting type

下一篇: Python string get leading characters up to first comma