Coding Diary.

(파이썬) for 반복문, range 함수, for 반복문 이용해서 리스트 변경하기 본문

Coding/Python

(파이썬) for 반복문, range 함수, for 반복문 이용해서 리스트 변경하기

life-of-nomad 2024. 6. 8. 10:01
728x90
반응형
파이썬에는 for 반복문과 while 반복문이 있습니다. 먼저, 이번글에서는 iterable(반복가능한) 것을 순회하는데 사용할 수 있는 for 반복문에 대해 알아보겠습니다. 
  • iterable : 요소들을 한 번에 하나씩 반환할 수 있는 객체 => 딕셔너리, 문자열, 리스트, 튜플

1. for 반복문

  • 아래의 예시에서 리스트 cities 를 사용하여 for 반복문을 알아보겠습니다.
cities = ['new york city', 'mountain view', 'chicago', 'los angeles']
for city in cities:
    print(city)
print("Done!")

>>> new york city
    mountain view
    chicago
    los angeles
    Done!
  • 반복문의 첫번째 줄은 키워드 for로 시작하고, 이것이 for 반복문임을 나타냅니다.
  • 그 다음에는 city in cities 가 나와서 city 가 반복 변수이며, cities가 반복되는 iterable 이라는 점을 나타냅니다. 반복문이 처음 반복될 때 city 는 citeis의 첫 번째 요소의 값인 "new york city"를 받습니다.
  • for 반복문의 시작은 항상 콜론(:)으로 끝납니다.
  • for 반복문의 시작 줄 뒤에는 들여쓰기가 된 코드 블록인 반복문 바디가 나옵니다. 이 반복문이 매번 반복될 때 마다 그 블록이 실행됩니다. 위의 예시에는 바디가 print(city) 한 줄만 있습니다.
  • 반복문의 바디가 실행된 다음에는 다음 줄로 넘어가지 않고 다시 for 시작 줄로 돌아가서 반복 변수가 iterable의 다음 요소의 값을 취합니다. 위의 반복문이 두번째 반복될 때 city 는 cities 의 다음 요소인 mountain view를 취합니다.
  • 이러한 과정의 반복문은 iterable의 모든 요소를 반복할 때까지 반복됩니다. 
  • 그 다음 반복문의 바디 다음에 있는 줄인 print("Done!")으로 넘어갑니다. 들여쓰기가 되어 있지 않기 때문에 우리는 반복문 바디 다음 줄이 무엇인지 알수 있습니다. 
  • 반복 변수의 이름은 원하는대로 작성할 수 있으나, 일반적인 패턴은 반복 변수와 이터러블 이름을 갖게 하는 것입니다. 각각 단수형과 복수형을 씁니다.

2. for 반복문과 함께 range() 함수 사용하기

  • range()는 반복 가능한 일련의 숫자를 만드는데 사용하는 내장 함수입니다.
  • 일정한 횟수로 동작을 반복하기 위해 for 반복문과 함께 range()를 자주 사용합니다. 
  • 숫자를 반복하기 위해 어떤 변수도 사용할 수 있지만 프로그래머들은 관행적으로 i를 사용합니다.
for i in range(3):
    ("Hello!")
    
>>> Hello!
    Hello!
    Hello!
  • range(start=0, stop, step=1) 
    • range() 함수는 3개의 정수 인수를 받습니다. 
    • 첫 번째와 세 번째는 선택사항 입니다. 
    • start : 수열의 첫 번째 숫자, 지정하지 않으면 기본값은 0이 됩니다.
    • stop : 수열의 마지막 숫자보다 1만큼 큽니다. 반드시 지정해야 하는 인수입니다.
    • step : 수열에 있는 각 숫자들 사이의 차이, 지정하지 않으면 기본값은 1이 됩니다. 
for i in range(4)
    print(i)
>>> 0, 1, 2, 3

for i in range(2, 6)
    print(i)
>>> 2, 3, 4, 5

for i in range(1, 10, 2)
    print(i)
>>> 1, 3, 5, 7, 9

 

3. 리스트 만들기와 변경하기

  • for 반복문을 사용하여 리스트에서 정보를 추출할 뿐만 아니라 리스트를 만들고 변경할 수 있습니다.
  • 아래와 같이 반복문을 매번 반복할 때 새 리스트를 추가하여 리스트를 만들 수 있습니다.
cities = ['new york city', 'mountain view', 'chicago', 'los angeles']
capitalized_cities = []

for city in cities:
    capitalized_cities.append(city.title())
  • 리스트를 변경하는 방법은 range() 함수를 사용해야 합니다. 
  • range() 함수를 사용하여 cities 리스트의 각 값에 대한 인덱스를 생성할 수 있습니다.
  • cities[index]를 사용하여 리스트의 요소에 액세스해서 cities 리스트 안의 값을 변경할 수 있습니다.
cities = ['new york city', 'mountain view', 'chicago', 'los angeles']

for index in range(len(cities)):
    cities[index] = cities[index].title()
    print(cities)

>>> ['New York City', 'Mountain View', 'Chicago', 'Los Angeles']

 

4.  예시

문제1) 리스트의 .append 메서드 이용

  • names = ["Joey Tribbiani", "Monica Geller", "Chandler Bing", "Phoebe Buffay"]를
  • names = ["joey_tribbiani", "monica_geller", "chandler_bing", "phoebe_buffay"]로 바꾸시오.
names = ["Joey Tribbiani", "Monica Geller", "Chandler Bing", "Phoebe Buffay"]
usernames = []

for name in names:
    usernames.append(name.lower().replace(" ", "_"))
    
print(usernames)

>>> ["joey_tribbiani", "monica_geller", "chandler_bing", "phoebe_buffay"]

 

★주의★

  • 위의 경우 처럼 새 리스트를 만드는게 아니라 names 리스트를 수정한다고 하면 수정되지 않습니다.
names = ["Joey Tribbiani", "Monica Geller", "Chandler Bing", "Phoebe Buffay"]

for name in names:
    name = name.lower().replace(" ", "_")

print(names)
  • for 반복문 안에서 name 변수를 변경하면 그 값이 변환되지만, name 변수는 names 의 원소와 독립적인 변수입니다. 
  • 따라서 name 변수를 변경해도 원본 리스트인 names의 요소는 변하지 않습니다.
  • 원본 리스트 names 를 수정하려면 인덱스를 사용하여 리스트의 요소에 직접 접근해야 합니다.
  • 문제2번 처럼 하면 됩니다. 

 

문제2) range() 이용

  • usernames = ["Joey Tribbiani", "Monica Geller", "Chandler Bing", "Phoebe Buffay"]를
  • usernames = ["joey_tribbiani", "monica_geller", "chandler_bing", "phoebe_buffay"]로 바꾸시오.
usernames = ["Joey Tribbiani", "Monica Geller", "Chandler Bing", "Phoebe Buffay"]

for i in range(len(usernames)):
    usernames[i] = usernames[i].lower().replace(" ", "_")
    
print(usernames)

>>> ['joey_tribbiani', 'monica_geller', 'chandler_bing', 'phoebe_buffay']

 

문제3) XML 태그는 "<"로 시작하고 ">"로 끝나는 문자열로 식별할 수 있습니다. 다음 tokens 에서 XML 언어인 태그의 개수를 저장하는 변수를 count로 설정하고 count의 개수를 구하는 코드를 작성하시오.

tokens = ['<greeting>', 'Hello World!', '</greeting>']
count = 0

for token in tokens:
   if token[0] == '<' and token[-1] == '>':
   count += 1
   
print(count)

>>> 2

 

문제4) items = ['first string', 'second string'] 를  html_str =

<ul>
<li>first string</li>
<li>second string</li>
</ul>

로 바꾸시오.

items = ['first string', 'second string']
html_str = '<ul>\n'

for item in items:
    html_str += '<li>{}</li>\n'.format(item)
    
html_str += '</ul>'
    
print(html_str)

>>> <ul>
    <li>first string</li>
    <li>second string</li>
    </ul>

 

728x90
반응형