我有两个列表
l1=[obj1, obj2, obj3,obj4, obj5]
l1按日期组织,除非日期值为“无”。
我想将此列表插入第一个:
l2=[obj9, obj6,obj7,obj8]
我想尊重日期:如果obj1.date<obj9.date
obj9
l1
obj1
l2
for el in l1:
for e in l2:
if e.date<el.date
l1.insert(l1.index(el),e)
else:
l1.insert(l1.index(el)+1,e)
for ii = 1:length(firstvariable)
foldername{ii} = sprintf('''\\STH\\Sth %s\\ABC %s;''',firstvariable{ii},secondvariable{ii});
end
foldername = {''\STH\Sth A\ABC D;''} {''\STH\Sth B\ABC E;''} {''\STH\Sth C\ABC F;''}
foldername{index} % Gives back a string
foldername(index) % Gives back a cell
我试过这段代码:
{{1}}
程序运行没有错误,但没有返回结果。
有关如何以pythonic方式执行此操作的任何想法?
答案 0 :(得分:2)
你还没有回答我关于你如何做的问题&#34; null&#34;处理的日期 - 我假设您的意思是None
的值 - 所以以下可以正确处理这些日期。
你确实说过&#34;但我需要obj,其值为null,并且在#34;在一个不同的答案下的评论中,所以我实现了那样做的东西,否则在插入第二个列表中的元素时可以按任何顺序保留原始顺序......并且它似乎运行速度非常慢(或挂起。。
import datetime
class Object(object):
def __init__(self, date_string=None):
self.date = (date_string if date_string is None else
datetime.datetime.strptime(date_string, "%Y%m%d"))
def __repr__(self):
return '{}({!r})'.format(self.__class__.__name__,
self.date.strftime("%Y%m%d") if self.date
else None)
obj1 = Object('20171001')
obj2 = Object('20171002')
obj3 = Object(None)
obj4 = Object('20171004')
obj5 = Object('20171005')
obj6 = Object('20171006')
obj7 = Object('20171007')
obj8 = Object('20171008')
obj9 = Object('20171009')
l1 = [obj1, obj2, obj3, obj4, obj5]
l2 = [obj9, obj6, obj7, obj8]
print('Before:')
print(l1)
print(l2)
for elem2 in l2:
for i, elem1 in enumerate(l1):
if elem1.date and elem2.date < elem1.date:
l1.insert(i, elem2)
break
else:
l1.append(elem2)
print('After:')
print(l1)
输出:
Before:
[Object('20171001'), Object('20171002'), Object(None), Object('20171004'), Object('20171005')]
[Object('20171009'), Object('20171006'), Object('20171007'), Object('20171008')]
After:
[Object('20171001'), Object('20171002'), Object(None), Object('20171004'), Object('20171005'), Object('20171006'), Object('20171007'), Object('20171008'), Object('20171009')]
`