Skip to content
컴퓨터잡담
2021.06.24 10:25

파이썬 for문으로 자동변수 생성하기

조회 수 3796 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

파이썬 for문으로 자동변수 생성하기

 

 

 

#자동변수선언

for i in range(0,20):

glabals()['Var_{}'.format(i)] = 0

 

 

 

 

 

 

#선언변수 확인

 

 

 

 

 

print(Var_1, Var_2)

 

 

 

예제)

 

Variable_ea = 3

 

#변수 자동 생성 및 입력

for i in range(1, Variable_ea + 1)

inp = input("typing the variable_{} : ".format(i))

globals()['Var_{}'.format(i)] = inp

 

#선언 변수 확인

print(Var_1, Var2_Var3)

 

 

 

Variable_ea = 20 #20까지
for i in range(0Variable_ea):
    inp = "str(entry_{}".format(i) + ".get())"
    globals()['txt{}'.format(i)] = inp
    
    #print(now + " ||| " + eps + " ||| " + bps + " ||| " + per + " ||| " + upper + " ||| " + pbr + " ||| " + allocation)
    #worksheet.insert_row([datetoday, search_data, search_name, now, eps, bps, per, pbr, allocation, Shareholder, content], 4)
 
print(inp,txt1,txt5)

 

 

결과:

str(entry_19.get()) str(entry_1.get()) str(entry_5.get())

 

 

 

 

import time
from datetime import datetimedelta
from unicodedata import lookup #time 명령어 사용하기 
from bs4 import BeautifulSoup # BeautifulSoup 불러오기
#파이썬 requests 모듈은 간편한 HTTP 요청처리를 위해 사용하는 모듈로 별도로 설치해 주어야 한다.
import requests #pip3 install requests
import sys #파라미터 변수값을 가져오기 위해서 sys패키지를 import 함
 
from selenium import webdriver
options = webdriver.ChromeOptions()
options.add_experimental_option('excludeSwitches', ['enable-logging'])
browser = webdriver.Chrome(options=options)
#browser = webdriver.Chrome()
 
try:
    search_data = sys.argv[1]
 
except:
    search_data = ""
 
if search_data == "":
    search_data = ["흔한남매"
 
for idata in search_data#멀티조회
 
    #투자지표 https://navercomp.wisereport.co.kr/v2/company/c1040001.aspx?cmp_cd=004270&cn=
    #url = "https://library.gyeongju.go.kr/?page_id=search_booklist&mode=tBookList&manage_code=&display_flag=1&search_field1=IAL&value1=" + idata + "&submit.x=25&submit.y=17"       
    #뷰티풀
    idata = "마법천자문"
    browser.get('https://library.gyeongju.go.kr/?page_id=search_booklist&mode=tBookList&field1=IAL&value1='+idata+'&submit.x=33&submit.y=22&collection=tot_book&msa=&formclass=&local=&startyear=&endyear=&textlang=&simplelang=')
 
    time.sleep(1)
    #element = browser.find_element_by_tag_name('tbody')
    #bs_html = element.find_element_by_css_selector('a').get_attribute('href')  #한개의 href만 가능
    i=0
    for link in browser.find_elements_by_css_selector("td>a"):
        #print(link.text + "," + link.get_attribute('href'))
        globals()['title_{}'.format(i)] = link.text
        globals()['link_{}'.format(i)] = link.get_attribute('href')
        i = i + 1
            
    for link in browser.find_elements_by_css_selector("td>a"):
        print(link.text + "," + link.get_attribute('href'))        
        
    browser.close() 

 

 

 

 for 반복문과 append를 활용하여 리스트를 만드는 방법을 알아보겠습니다.

23.3.1  for 반복문으로 1차원 리스트 만들기

먼저 요소 10개가 일렬로 늘어서 있는 1차원 리스트부터 만들어보겠습니다. 1차원 리스트라고 해서 특별한 것은 없습니다. 지금까지 사용했던 일반적인 리스트입니다.

list_create.py

a = []    # 빈 리스트 생성
 
for i in range(10):
    a.append(0)    # append로 요소 추가
 
print(a)

실행 결과

[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

방법은 간단합니다. for 반복문으로 10번 반복하면서 append로 요소를 추가하면 1차원 리스트를 만들 수 있습니다.

23.3.2  for 반복문으로 2차원 리스트 만들기

이번에는 for 반복문을 사용하여 2차원 리스트를 만들어보겠습니다.

two_dimensional_list_create.py

a = []    # 빈 리스트 생성
 
for i in range(3):
    line = []              # 안쪽 리스트로 사용할 빈 리스트 생성
    for j in range(2):
        line.append(0)     # 안쪽 리스트에 0 추가
    a.append(line)         # 전체 리스트에 안쪽 리스트를 추가
 
print(a)

실행 결과

[[0, 0], [0, 0], [0, 0]]

먼저 세로 크기만큼 반복하면서 안쪽 리스트로 사용할 빈 리스트 line을 만듭니다.

for i in range(3):
    line = []              # 안쪽 리스트로 사용할 빈 리스트 생성

그다음에 가로 크기만큼 반복하면서 line에 append로 0을 추가합니다. 바깥쪽 반복문에서는 다시 append로 전체 리스트 a에 안쪽 리스트 line을 추가하면 됩니다.

    for j in range(2):
        line.append(0)     # 안쪽 리스트에 0 추가
    a.append(line)         # 전체 리스트에 안쪽 리스트를 추가

여기서는 append에 리스트를 넣으면 리스트 안에 리스트가 들어가는 특성을 이용했습니다.

23.3.3  리스트 표현식으로 2차원 리스트 만들기

for 반복문을 두 번 사용하니 코드가 좀 길어졌죠? 리스트 표현식을 활용하면 코드 한 줄로 2차원 리스트를 만들 수 있습니다.

>>> a = [[0 for j in range(2)] for i in range(3)]
>>> a
[[0, 0], [0, 0], [0, 0]]

리스트 표현식 안에서 리스트 표현식을 사용했습니다. 먼저 [0 for j in range(2)]로 0을 2번 반복하여 [0, 0]으로 만들고 다시 for i in range(3)으로 [0, 0]을 3번 반복하여 [[0, 0], [0, 0], [0, 0]]으로 만듭니다.

만약 for 반복문을 한 번만 사용하고 싶다면 다음과 같이 식 부분에서 리스트 자체를 곱해주면 됩니다.

>>> a = [[0] * 2 for i in range(3)]
>>> a
[[0, 0], [0, 0], [0, 0]]

즉, 0이 1개 들어있는 리스트 [0]에 2를 곱하면 [0, 0]이 되는데, 이걸 for i in range(3)으로 3번 반복해주면 [[0, 0], [0, 0], [0, 0]]이 됩니다.

23.3.4  톱니형 리스트 만들기

지금까지 만든 2차원 리스트는 사각형 리스트였습니다. 그럼 가로 크기가 불규칙한 톱니형 리스트(jagged list)는 어떻게 만들면 될까요? 여기서는 가로 크기를 알고 있다고 가정하고, 리스트를 만들어보겠습니다.

jagged_list_create.py

a = [3, 1, 3, 2, 5]    # 가로 크기를 저장한 리스트
b = []    # 빈 리스트 생성
 
for i in a:      # 가로 크기를 저장한 리스트로 반복
    line = []    # 안쪽 리스트로 사용할 빈 리스트 생성
    for j in range(i):    # 리스트 a에 저장된 가로 크기만큼 반복
        line.append(0)
    b.append(line)        # 리스트 b에 안쪽 리스트를 추가
 
print(b)

실행 결과

[[0, 0, 0], [0], [0, 0, 0], [0, 0], [0, 0, 0, 0, 0]]

먼저 리스트 a에 톱니형 리스트의 가로 크기를 미리 저장해 놓았습니다. 이 리스트 a를 for로 반복하면 가로 크기를 꺼내면서 5번 반복하겠죠? for 반복문 안에서 다시 for로 꺼낸 가로 크기 i만큼 반복하면서 append로 요소를 추가해줍니다. 그리고 바깥쪽 반복문에서 리스트 b에 안쪽 리스트 line을 추가하면 됩니다.

사실 이것도 그냥 리스트 표현식을 활용하면 간단하게 만들 수 있습니다.

>>> a = [[0] * i for i in [3, 1, 3, 2, 5]]
>>> a
[[0, 0, 0], [0], [0, 0, 0], [0, 0], [0, 0, 0, 0, 0]]

가로 크기가 들어있는 리스트 [3, 1, 3, 2, 5]에서 꺼낸 숫자만큼 리스트 [0]을 곱해서 톱니형 리스트를 만들었습니다.

이처럼 리스트 표현식은 다양한 방식으로 응용할 수 있으므로 눈에 익혀 두는 것이 좋습니다.

 

참고 | sorted로 2차원 리스트 정렬하기

2차원 리스트를 정렬할 때는 sorted 함수를 사용합니다.

sorted(반복가능한객체, key=정렬함수, reverse=True 또는 False)

다음은 학생 정보가 저장된 2차원 리스트를 정렬합니다.

students = [
    ['john', 'C', 19],
    ['maria', 'A', 25],
    ['andrew', 'B', 7]
]
 
print(sorted(students, key=lambda student: student[1]))  # 안쪽 리스트의 인덱스 1을 기준으로 정렬
print(sorted(students, key=lambda student: student[2]))  # 안쪽 리스트의 인덱스 2를 기준으로 정렬

실행 결과

[['maria', 'A', 25], ['andrew', 'B', 7], ['john', 'C', 19]]
[['andrew', 'B', 7], ['john', 'C', 19], ['maria', 'A', 25]]

sorted의 key에 정렬 함수를 지정하여 안쪽 리스트의 요소를 기준으로 정렬했습니다. student[1]은 안쪽 리스트의 인덱스 1을 뜻하며 'A''B''C' 순으로 정렬합니다. 마찬가지로 student[2]는 안쪽 리스트의 인덱스 2를 뜻하며 7, 19, 25 순으로 정렬합니다. 여기서는 정렬 함수를 람다 표현식으로 작성했는데 람다 표현식은 'Unit 32 람다 표현식 사용하기'에서 자세히 설명하겠습니다.

 

 

 

 

 

로그인 후 댓글쓰기가 가능합니다.

?

  1. 14
    May 2012
    18:42

    부팅이 되지 않을 경우 조치방법

    Category컴퓨터잡담 Views4007
    Read More
  2. 12
    Jun 2012
    14:26

    무선제어 각종제어 모터 기어 체인 등

    Category컴퓨터잡담 Views4007
    Read More
  3. 07
    Sep 2021
    19:56

    키움 증권 API를 이용하여 주식 자동 매매 프로그램 개발

    Category파이썬 Views3975
    Read More
  4. 16
    Oct 2012
    22:01

    구글 플레이스토어

    Category컴퓨터잡담 Views3941
    Read More
  5. 23
    Feb 2019
    18:50

    CPU-Z

    Category컴퓨터잡담 Views3924
    Read More
  6. 08
    Mar 2016
    19:46

    윈도우 time_wait 없애기

    CategoryServer Views3921
    Read More
  7. 11
    Nov 2014
    08:22

    쇼킹한 웹 긁어오기

    Category[Docs]스프레드시트 Views3904
    Read More
  8. 01
    Dec 2015
    03:48

    안드로이드 플래시 동영상이 안될때 해결방법 [200, Stream not found, NetStream.Play.StreamNotFound, clip: '[Clip] ...Progress]

    Category컴퓨터잡담 Views3903
    Read More
  9. 04
    Aug 2021
    08:56

    CCS 메뉴 스타일 링크

    CategoryHTMLPHPMSQL Views3898
    Read More
  10. 22
    Feb 2016
    09:47

    8기가 램에 맞는 Mysql config 셋팅 값

    CategoryServer Views3861
    Read More
  11. 21
    Mar 2015
    11:41

    윈도우 8.1 종료버튼 만들기

    CategoryWindowsTip Views3852
    Read More
  12. 22
    Sep 2021
    09:45

    파이썬 음력에서 양력변환 또는 양력에서 음력변환방법

    Category파이썬 Views3823
    Read More
  13. 23
    Aug 2016
    20:54

    innodb_use_sys_malloc에 따라 The InnoDB memory heap is disabled mysql error 메시지

    CategoryServer Views3816
    Read More
  14. 24
    Jun 2021
    10:25

    파이썬 for문으로 자동변수 생성하기

    Category컴퓨터잡담 Views3796
    Read More
  15. 21
    Mar 2015
    14:42

    윈도우 8.1 업데이트 하지 않기

    CategoryWindowsTip Views3780
    Read More
  16. 09
    Sep 2021
    21:56

    파이썬 오류모음(에러모음)

    Category파이썬 Views3759
    Read More
  17. 24
    Jul 2021
    10:49

    html testing

    CategoryHTMLPHPMSQL Views3747
    Read More
  18. 05
    Feb 2011
    15:24

    언인스톨 사용하기

    Category컴퓨터잡담 Views3691
    Read More
  19. 14
    Aug 2016
    08:07

    XE 반응형 모바일 메타태그 삽입하기

    CategoryServer Views3689
    Read More
  20. 21
    Feb 2023
    06:32

    파이썬 모듈 업그레이드 명령어

    Category파이썬 Views3655
    Read More
Board Pagination Prev 1 ... 36 37 38 39 40 ... 46 Next
/ 46

http://urin79.com

우린친구블로그

sketchbook5, 스케치북5

sketchbook5, 스케치북5

나눔글꼴 설치 안내


이 PC에는 나눔글꼴이 설치되어 있지 않습니다.

이 사이트를 나눔글꼴로 보기 위해서는
나눔글꼴을 설치해야 합니다.

설치 취소