2012-11-09 4 views
0
liste = [1,2,8,12,19,78,34,197,1,-7,-45,-97,-32,23] 

liste2 = [] 

def repetisjon(liste,liste2): 

    for count in liste: 
     if count > 0: 
      liste2.append(1) 
     elif count < 0: 
      liste2.append(0) 
    return liste2 

    return (liste2) 

print (repetisjon(liste,liste2)) 

요점은 목록의 모든 값을 변경하는 것입니다. 0보다 크거나 같으면 1로 대체해야합니다. 0보다 작 으면 0으로 대체됩니다. 그러나 현재 목록을 변경할 수 없었습니다. 내가 찾은 유일한 해결책은 새로운 목록을 만드는 것이 었습니다. 그러나 새 목록을 만들지 않고 현재 목록을 변경하는 방법이 있습니까? 나는 이것도 시도했지만 전혀 작동하지 않았다 :목록의 값을 변경 하시겠습니까?

liste = [4,8,43,4,78,24,8,45,-78,-6,-7,-3,8,-12,4,36] 
def repe (liste): 
    for count in liste: 
     if count > 0: 
      count == 1 
     else: 
      count == 0 
    print (liste) 

repe(liste) 

답변

0

여기에서 liste의 내용을 변환 된 데이터로 바꾼다. sameliste가 같은 목록을 가리키고 있기 때문에 값도 변경됩니다.

>>> sameliste = liste = [1,2,8,12,19,78,34,197,1,-7,-45,-97,-32,23] 
>>> sameliste 
[1, 2, 8, 12, 19, 78, 34, 197, 1, -7, -45, -97, -32, 23] 
>>> liste 
[1, 2, 8, 12, 19, 78, 34, 197, 1, -7, -45, -97, -32, 23] 
>>> liste[:] = [int(x >= 0) for x in liste] 
>>> liste 
[1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1] 
>>> sameliste 
[1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1] 
>>> 
관련 문제