2014-03-27 6 views
2

이것은 첫 번째 질문입니다. retitling이 필요하거나 다른 섹션으로 옮겨야 할 경우 미안합니다.For-While 루프를 쓰려고하는데, 작동하지 않습니다.

list1의 모든 문자열에 숫자 1 - 4를 추가하고이 새 문자열을 list2에 넣는 루프를 작성하려고합니다. 여기까지 내가 지금하고있는 일이있다.

number = 0 
list1 = ["a","b","c"] 
list2=[] 
for item in list1: 
    while number < 5: 
     list2.append(str(item)+str(number)) 
     number = number + 1 

다음에해야할 일이 없어졌다. 어떤 도움을 주시면 감사하겠습니다.

P. 지금 내가 할 경우 인쇄 목록 2 [ 'a0', 'a1', 'a3', 'a4']를 출력합니다. 내가 일이 원하는 것은

print list2 

['a1', 'a2', 'a3', 'a4', 'b1', 'b2', 'b3', 'b4', 'c1', 'c2', 'c3', 'c4'] 

답변

1

문제는을 초기화 한 것입니다. 루프는 for 외부의입니다. 따라서 forlist1의 모든 항목에 대해 실행 되더라도 조건이 거짓이므로 다음 항목에 대해서는 while이 실행되지 않습니다.

list1 = ["a","b","c"] 
list2=[] 
for item in list1: 
    number = 1  # You need to reset number within the loop, not outside! 
    while number < 5: 
     list2.append(str(item)+str(number)) 
     number = number + 1 
print list2 

는 생산 :

['a1', 'a2', 'a3', 'a4', 'b1', 'b2', 'b3', 'b4', 'c1', 'c2', 'c3', 'c4'] 
0

이 시도입니다 :

number = 5 
list1 = ["a","b","c"] 
list2=[] 
for item in list1: 
    for i in range(1,number): 
     list2.append(str(item)+str(i)) 

print list2 

출력 :

['a1', 'a2', 'a3', 'a4', 'b1', 'b2', 'b3', 'b4', 'c1', 'c2', 'c3', 'c4'] 

당신이 공유하는 코드는 다음과 같은 편집이 필요합니다

list1 = ["a","b","c"] 
list2=[] 
for item in list1: 
    number = 1  
    while number < 5: 
     list2.append(str(item)+str(number)) 
     number = number + 1 

print list2 
1

을 다른 답변에 대한 대안, 당신이 또는 당신이 찾고있는 결과를 달성하기 위해 list comprehension을 사용할 수 있습니다으로 :

list1 = ['a','b', 'c'] 
number = 5 
list2 = [ '%s%s' % (item, i+1) for item in list for i in range(0,number) ] 
print list2 

['a1', 'a2', 'a3', 'a4', 'a5', 'b1', 'b2', 'b3', 'b4', 'b5', 'c1', 'c2', 'c3', 'c4', 'c5'] 
를 생성을
관련 문제