2014-10-10 98 views
-1

这里是我写我的作业程序:的Python:如果到达结束列表

def codes(lst, cods): 
    lst1=[] 
    for element in lst: 
     cccc = element[0:4] 
     yyyy = element[4:8] 
     mm = element[8:10] 
     dd = element[10:12] 
     if cccc in cods: 
      lst1 += [cccc, int(dd), int(mm), int(yyyy)] 

     if cccc not in cods: 
      lst1 += [cccc + yyyy + mm + dd] 
    return lst1 

first = ['Cara20130716', 'Tara20080601', 'PALA19961231', 'Melo19601023'] 
secnd = ['PALA', 'CARA', 'Tara'] 
print codes(first, secnd) 

try it at repl.it

唯一的问题是,实际上老师要我添加/移除元素lst:我写的代码给了我确切的正确的输出,但它应该'返回'lst,而不是lst1。 因此,这里是我想了解该解决方案(对不起,伪代码..):

如果CCCC在鳕鱼: LST1 + = [CCCC,INT(DD),INT(毫米),INT(年)]

如果CCCC不是在鳕鱼: LST1 + = [CCCC + YYYY +毫米+ DD]

如果抵达LST的端: 与LST1替换LST

返回LST

因此,当该程序已签出LST的所有元素,它会像做

lst[:] = [] 
lst.extend.lst1 

这可能吗?我该怎么做?

+0

作业中的原始问题是什么? – RJFalconer 2014-10-10 08:33:06

+0

我不确定'lst.extend.lst1'是否可以工作。 'extend'是一种方法,它应该得到一些列表元素。它可以像'lst.extend(lst1)'一样工作。而且你可以在你的函数中使用'extend'来代替+ =。 – cezar 2014-10-10 08:40:50

回答

0

为什么不先做lst的副本,然后将新元素附加到原始列表中?也许我不太明白你想要实现什么:

def codes(lst, cods): 
    lst1=lst[:] 
    lst[:] = [] 

    for element in lst1: 
     cccc = element[0:4] 
     yyyy = element[4:8] 
     mm = element[8:10] 
     dd = element[10:12] 

     if cccc in cods: 
      lst += [cccc, int(dd), int(mm), int(yyyy)] 
     else: 
      lst += [cccc + yyyy + mm + dd] 

    return lst 

first = ['Cara20130716', 'Tara20080601', 'PALA19961231', 'Melo19601023'] 
secnd = ['PALA', 'CARA', 'Tara'] 
print codes(first, secnd) 
+0

谢谢你,男人!这是正确的:D – d33pcode 2014-10-10 10:23:53

0

这是你想要的。

#!/usr/bin/env python 
#-*- coding:utf-8 -*- 



def codes(lst, cods): 
    i = 0 
    while i < len(lst): 
     cccc = lst[i][0:4] 
     if cccc in cods: 
      yyyy = lst[i][4:8] 
      mm = lst[i][8:10] 
      dd = lst[i][10:12] 
      lst.pop(i) 
      lst.insert(i, cccc) 
      lst.insert(i+1, int(dd)) 
      lst.insert(i+2, int(mm)) 
      lst.insert(i+3, int(yyyy)) 
      i += 3 
     i += 1 
    return lst 
first = ['Cara20130716', 'Tara20080601', 'PALA19961231', 'Melo19601023'] 
secnd = ['PALA', 'CARA', 'Tara'] 
print codes(first, secnd) 

如果有帮助,不要忘记接受它作为答案! :)