2017-09-23 3 views
0

두 개의 인수, 한 문자 및 목록이있는 목록을 필요로하는 함수가 필요한 문제가 있습니다. 그런 다음이 함수는 해당 요소를 목록의 모든 목록에 추가합니다. 내가 인수 "o"[['tesc'], ['fo'], [1]]이 경우에 따라서 출력은 여기에 내가 내가 모든목록 목록의 각 목록에 요소를 추가하려면 어떻게합니까?

def distribute(e, l): 
    new_list = [] 
    for i in l: 
     new_list.append(i) 
    for e in new_list: 
     new_list.append(e) 
    print(new_list) 

에서 출력을하지 않는 권리로 아무것도 아니에요 의심, 내 코드의 [['tesc', 'o'], ['fo', 'o'], [1, 'o']]

해야한다 무엇 내가 틀렸어?

답변

1

당신이 시도 할 수 있습니다 :

def add_item(l, a): 
    return [i+[a] for i in l] 

print(add_item([['tesc'], ['fo'], [1]], "o")) 

출력 :

[['tesc', 'o'], ['fo', 'o'], [1, 'o']] 
1

당신은 for-loop에와 functionparameter과 같은 변수 이름 'e'을 사용하고 있습니다. 또한이 두 번째 loop에서 append ~ iappend ~ new_list이 아니기 때문에 하위 목록이므로 append으로 지정해야합니다. 당신이 new_list의 각 요소를 통해 looping을하지만 그것은 결코 끝나지 않아 있도록 그렇게으로 new_list에 추가로 function 결코 완료하지 왜

입니다.

def distribute(e, l): 
    new_list = [] 
    for i in l: 
     new_list.append(i) 
    for i in new_list: 
     i.append(e) 
    return new_list 

이 작동 그러나 그것은 매우 pythonic 아니다 : 당신이 function가 작성 될 때

마지막으로, 나는 returnprint을 변경합니다. 첫 번째로 for-loop이 수행하는 모든 작업은 입력 목록 ('l')의 복사본을 만드는 것입니다 (일부 응용 프로그램에서는 필요 없음). 입력이 list 인 경우 listsimmutable으로 수정됩니다.

그러나 loop은 모두 을 slice으로 복사하여 제거 할 수 있습니다. 이 함수는 더 간결 만들 것 :

def distribute(e, l): 
    new_list = l[:] 
    for i in new_list: 
     i.append(e) 
    return new_list 

물론, 당신은 상관하지 않을 경우 function로 구문 분석 list이 변경되었을 경우, 당신은 만드는 귀찮게하지 수의 복사본 :

def distribute(e, l): 
    for i in l: 
     i.append(e) 
    return l 
1

def distribute(e, l): 
    for sublist in l: 
     sublist.append(e) 

    print(l) 

distribute("o", [['tesc'], ['fo'], [1]]) 

출력 :

0

너무 일을 복잡하게 만들고있어

관련 문제