Gmony5100 :
나는 목록에서 목록에서 목록에서 번호를 취 다음 함수가 (이상한 설정을하지만, 내 말에 나머지 작업에 필요한) 모든 목록을 통해 종류와 가장 안쪽 목록에서 번호를 제거하는 것이 . 나뿐만 아니라 추가 몇 가지 기능을하고 난 루프와 문 경우 몇 중첩으로이 방식으로 작성했습니다.
list = [['John', ['1','2','3']], ['Bob', ['4','5','6','7']], ['Jim', ['8','9']]]
def removeNumber(Number):
for x in list:
for y in x[1]:
if y == Number:
x[1].remove(Number)
removeNumber('5')
print(list)
코드 작품 위의 블록은 가장 안쪽의 목록에서 지정된 수를 제거하지만 나는 우리가 모든이 경우 많은 루프에 대한 중첩과와 끔찍 동의 할 수 있다고 생각처럼. 나는 파이썬 꽤 새로운 오전 지능형리스트와 많은 연습이 없었어요.
거기에이 사용 지능형리스트를 작성하는 방법 또는 더 좋은 방법이 전혀있을 경우 다른 방법을 사용하는 경우 궁금하네요. 더 나은 "평면이 중첩보다 낫다"의 진언을 맞는 의미한다. 이것에 어떤 도움이 많이 주시면 감사하겠습니다
tdelaney :
당신은 코드에서 버그를 가지고있다. 에서 항목을 제거 x[1]
외부 원인은 for
목록에있는 항목을 건너 뜁니다. 원래 목록을 유지하려면 수행
def removeNumber(Number):
for x in list:
while Number in x[1]:
x[1].remove(Number)
그러나 파이썬에서 우리는 일반적으로 단지 새로운 목록을 만들
def removeNumber(Number):
for x in list:
x[1] = [n for n in x[1] if n != Number]