Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
具有来自列表的输入的Python调用类_Python_List - Fatal编程技术网

具有来自列表的输入的Python调用类

具有来自列表的输入的Python调用类,python,list,Python,List,我有一个名为Interval的类,我想从Interval列表中为它创建多个Interval对象。我如何使用地图 class Interval(object): def __init__(self, s=0, e=0): self.start = s self.end = e intervals = [[1,2],[3,5],[6,7],[8,10],[12,16]] 我试着做: objs = map(Interval, intervals) 但这会将

我有一个名为Interval的类,我想从Interval列表中为它创建多个Interval对象。我如何使用地图

class Interval(object):
    def __init__(self, s=0, e=0):
        self.start = s
        self.end = e

intervals = [[1,2],[3,5],[6,7],[8,10],[12,16]]
我试着做:

objs = map(Interval, intervals)
但这会将完整的间隔作为第一个参数发送给类,而不是单独发送给类的输入

您可以从
itertools
使用:

from itertools import starmap

objs = starmap(Interval,intervals)
如果您不想使用
itertools
库,则等效项为:

objs = map(lambda x: Interval(*x),intervals)
objs=map(λx:Interval(*x),Interval)
据我所知,这就是为什么他们称之为星图:因为如果你要使用lambda表达式,就会有星号。

你可以使用from
itertools

from itertools import starmap

objs = starmap(Interval,intervals)
如果您不想使用
itertools
库,则等效项为:

objs = map(lambda x: Interval(*x),intervals)
objs=map(λx:Interval(*x),Interval)

据我所知,这就是为什么他们称之为星图:因为如果你使用lambda表达式,会有星号。

也许你也可以试试老派的方法:

class Interval(object):
    def __init__(self, s=0, e=0):
        self.start = s
        self.end = e


def map_intervals(intervals):
        ret = []
        for inter in intervals:
          ret.append(Interval(inter[0],inter[1]))
        return ret
inters = [[1,2],[3,5],[6,7],[8,10],[12,16]]

也许你也可以试试老派的方式:

class Interval(object):
    def __init__(self, s=0, e=0):
        self.start = s
        self.end = e


def map_intervals(intervals):
        ret = []
        for inter in intervals:
          ret.append(Interval(inter[0],inter[1]))
        return ret
inters = [[1,2],[3,5],[6,7],[8,10],[12,16]]
这对我有用

>>> objs = []
>>> for interval in intervals:
...     objs.append(Interval(*interval))
... 
>>> objs
[<__main__.Interval object at 0x013E67D0>, <__main__.Interval object at 0x013E6910>, <__main__.Interval object at 0x013E68F0>, <__main__.Interval object at 0x013E6870>, <__main__.Interval object at 0x013E6950>]
>>> objs[0]
<__main__.Interval object at 0x013E67D0>
>>> objs[0].start
1
>>> objs[0].end
2
>>> 
>>objs=[]
>>>对于间隔中的间隔:
...     objs.append(间隔(*Interval))
... 
>>>objs
[, , ]
>>>objs[0]
>>>objs[0]。开始
1.
>>>objs[0]。结束
2.
>>> 
这对我很有效

>>> objs = []
>>> for interval in intervals:
...     objs.append(Interval(*interval))
... 
>>> objs
[<__main__.Interval object at 0x013E67D0>, <__main__.Interval object at 0x013E6910>, <__main__.Interval object at 0x013E68F0>, <__main__.Interval object at 0x013E6870>, <__main__.Interval object at 0x013E6950>]
>>> objs[0]
<__main__.Interval object at 0x013E67D0>
>>> objs[0].start
1
>>> objs[0].end
2
>>> 
>>objs=[]
>>>对于间隔中的间隔:
...     objs.append(间隔(*Interval))
... 
>>>objs
[, , ]
>>>objs[0]
>>>objs[0]。开始
1.
>>>objs[0]。结束
2.
>>> 

objs=list(映射(间隔,间隔))应该work@AlanLeuthard:它可以工作,但是,
s
将获得一个列表作为输入,
e
0
用于所有情况……objs=list(映射(间隔,间隔))应该work@AlanLeuthard:它可以工作,但是
s
将获得一个列表作为输入,在所有情况下,
e
都将是
0
。你在晚上的这个时候无处不在吗?哈哈哈,还有更好的答案。。。我必须承认!星图,这就是我要找的。谢谢晚上这个时候你到处都是吗?哈哈哈,还有更好的答案。。。我必须承认!星图,这就是我要找的。谢谢