具有来自列表的输入的Python调用类
我有一个名为Interval的类,我想从Interval列表中为它创建多个Interval对象。我如何使用地图具有来自列表的输入的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) 但这会将
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表达式,就会有星号。你可以使用fromitertools
:
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
。你在晚上的这个时候无处不在吗?哈哈哈,还有更好的答案。。。我必须承认!星图,这就是我要找的。谢谢晚上这个时候你到处都是吗?哈哈哈,还有更好的答案。。。我必须承认!星图,这就是我要找的。谢谢