80일차 2023-06-30

2023. 6. 30. 18:05Python

Python

Statement04 폴더에 추가

 

for.py 추가 코딩

'''
1 0 0 0 
0 1 0 0 
0 0 1 0
0 0 0 1 처럼 출력해 보자
0 0 0 0
'''
for i in range(5):#행을 구성
    for k in range(4):#각 열을 구성
        # 행과 열이 같을때 1출력 아니면 0출력
        if i==k :
            print(1,' ',end='')
        else:
            print(0, ' ', end='')
    print()#줄바꿈

'''
 0 0 0 1  (0,3) 
 0 0 1 0  (1,2)
 0 1 0 0  (2,1)
 1 0 0 0  (3,0)처럼 출력해 보자
'''
print('-' * 50)
#방법1]
for i in range(4):
    for k in range(4):
        # 행과 열의 합이 3일때 1출력 아니면 0출력
        if i+k == 3:
            print(1, ' ', end='')
        else:
            print(0, ' ', end='')
    print()
print('-' * 50)
#방법2
for i in range(1,5):
    for k in range(4,0,-1):
        if i==k:
            print(1, ' ', end='')
        else:
            print(0, ' ', end='')
    print()
'''
*
* *
* * *
* * * *
* * * * *  를 출력하여라 (이중 for문 이용)         
'''
print('-' * 50)
for i in range(5):
    for k in range(5):
        if i >= k :
            print('%-2c' % '*',end='')
    print()
print('-' * 50)
'''
문]아래 형식대로 구구단을 출력
2 * 1 = 2   3 * 1 = 3   4 * 1 = 4........9 * 1 = 9
2 * 2 = 4   3 * 2 = 6   4 * 2 = 8........9 * 2 = 18
..
..
2 * 9 = 18  3 * 9 = 27  4 * 9 = 36....... 9 * 9 = 81    
'''
for i in range(1,10):
    for k in range(2,10):
        print('%-2d * %-2d = %-4d' % (k,i,k*i),end='')
    print()

while.py

#1부터 10까지 누적합:while문 사용
sum =0
i=1#초기식
while i <=10:#반복 조건
    sum+=i#실행문
    i+=1#증감식
print('1부터 10까지 누적합:',sum,sep='')
'''
문]1부터 1000까지 숫자중 3의 배수 이거나 5의 배수인
숫자의 합을 구해라
단, 3과5의 공배수인 경우 제외(while문 사용)
'''
sum=0
i=1
while i <=1000:
    if (i%3==0) ^ (i%5==0):
        sum+=i
    i+=1
print('1부터 1000까지 3과 5의 배수의 누적합(공배수 제외):',sum,sep='')
#반복할 횟수가 정해지지 않은 경우 while문 사용
import random
i=1
while i !=5:
    i = random.randint(1,10)#1부터 10까지 난수 발생
    print('i는',i)
'''
 1 0 0 0
 0 1 0 0
 0 0 1 0
 0 0 0 1  while문으로...
'''
i=1#바깥 WHILE의 초기식
k=1#안쪽while의 초기식
while i < 5:#바깥 while문(행)
    while k < 5:#안쪽while의 초기식
        if i==k:
            print('%-2d' % 1,end='')
        else:
            print('%-2d' % 0, end='')
        k+=1#안쪽 while의 증가식
    i+=1#바깥 while의 증감식
    k=1#k를 다시 1로 초기화:
    print()
'''
* 
* *
* * *
* * * *
* * * * *(while문으로)
'''
i=0#바깥 WHILE의 초기식
while i < 5:#바깥 while문(행)
    k=0
    while k < 5:#안쪽while의 초기식
        if i>=k:
            print('%-2s' % '*',end='')
        k+=1#안쪽 while의 증가식
    i+=1#바깥 while의 증감식
    print()
'''
문]아래 형식대로 구구단을 출력
2 * 1 = 2   3 * 1 = 3   4 * 1 = 4........9 * 1 = 9
2 * 2 = 4   3 * 2 = 6   4 * 2 = 8........9 * 2 = 18
..
..
2 * 9 = 18  3 * 9 = 27  4 * 9 = 36....... 9 * 9 = 1  
while문으로...
'''
i=1
while i < 10:#바깥 while문(행)
    k=2
    while k < 10:#안쪽while의 초기식
        print('%-2s * %-2s = %-4s' % (k,i,i*k),end='')
        k+=1#안쪽 while의 증가식
    i+=1#바깥 while의 증감식
    print()
#무한 반복
#while True:
#    print('HELLO')
print('프로그램 끝')#자바처럼 UnReachable Code Error가 발생하지 않는다

결과)

 

if1.py

#0,0.0,0+0j는 False와 같고 None,''(빈문자열) ,
#빈 이터레이터 객체([],{},(),set()등)는
#조건식으로 판단시 False로 간주된다
if not 0:
    print('0은 False다')
if not None:
    print('None은 False다')
if not '':
    print('\'\'은 False다')
if not []:
    print('[]은 False다')
#조건식은 모든 식이 될 수 있다
num1 =9
if num1:
    print('num1은',num1)
if num1 % 2:
    print('num1 % 2의 값은(산술식)',num1 % 2)
if num1 % 2==0 and num1 >=10:
    print('%d는 짝수고 10보다 크거나 같은 수이다' % num1)
#파이썬에서 조건식을 수학에서 사용하는 방식으로 간편화 할 수도 있다.
if 5 < num1 < 15:#num1 > 5 and num1 < 15
    print('{}는 5보다 크고 15보다 작다'.format(num1))
if num1 %2 ==0:
    pass
if num1 % 2 ==0 :
    print('num1은 %d이다' % num1)
    print('{}는 짝수다'.format(num1))

'''
ord(문자) : 문자의 아스키코드나 유니코드값을 반환
chr(숫자) : 숫자(아스키코드값 혹은 유니코드값)에 대응하는 문자를 반환
'''
print('[문자를 아스키(유니)코드로 변환]',ord('가'),sep='\n')
print('[아스키(유니)코드를 문자로 변환]',chr(44032),sep='\n')

code = ord(input('한 문자를 입력하세요?'))
print(code)
'''
문]사용자가 입력한 문자가 숫자인지 판단하여라
숫자면 "숫자입니다"라고 출력하여라
숫자가 아니면 "숫자가 아닙니다"라고 출력하여라
'''
isNumber = '0' <= chr(code) <= '9'
if isNumber:
    print('숫자입니다')
if not isNumber:
    print('숫자가 아닙니다')
'''
문]사용자가 입력한 값이 숫자인지 먼저 판단하고
   숫자라면 2의 배수인지를 판단하여
   2의 배수인 경우만 '2의 배수입니다'라고 출력하여라.
   2의 배수가 아닌 경우 '2의 배수가 아니다'라고 출력
   문자 '0'의 아스키 코드값:48, '1':49 '2':50......
'''
#방법1]하나의 조건식안에서 논리 연산으로 처리
isMultiple = '0'<=chr(code) <='9' and (code-ord('0')) %2 ==0
if isMultiple: print('2의 배수입니다')
if '0'<=chr(code) <='9' and (code-ord('0')) %2 !=0:print('2의 배수가 아닙니다')
#방법2]if문 안의 if문으로 처리
if '0'<=chr(code) <='9':
    isMultiple=(code-ord('0')) %2 ==0
    if isMultiple:
        print('2의 배수입니다')
    if not isMultiple:
        print('2의 배수가 아닙니다')

결과)

3입력 (아스키 코드는 0이48이라)+3는 51

breakNcontinue.py

#※break문과 continue문은 반복문 안에서만 사용가능
#break#SyntaxError: 'break' outside loop
#continue #SyntaxError: 'continue' outside loop
i=0
while i < 10000000000000000000000000000000000000000000000000000000000000000000000000:
    i+=1
    print('[i가 {}일때]'.format(i))
    print('continue문 이전 출력문')
    if i % 2 ==0: continue
    print('continue문 이후 출력문')
    print('break문 이전 출력문')
    if i==3: break
    print('break문 이후 출력문')

결과)

continue는 함수안에서 초기화, break는 함수 밖으로 나감

 

 

Variable01폴더의 variable1.py에 추가

"""
변수=값
s=f'{변수 혹은 표현식}' 

f는 format-string(포맷 문자열)을 의미(파이썬 3.6부터 지원)
문자열 안에  변수나 표현식 값을 삽입하기 위해 사용.
중괄호안에 변수나 표현식을 넣을수 있다.
"""
name='가길동'
age=20
s = f'이름은 {name}이고 {name}의 10년후 나이는 {age+10}살 입니다'
print(s)

결과)

 

Statement04폴더에서 다시 생성

 

regularExpression.py

'''
[패턴을 표현하는 문자]
. : 임의의 한글자를 의미
예) a.b(acb,afb........)
*  :  * 바로 앞의 문자가 없거나 한 개 이상이 있을 경우
예) a*b (b,ab,aab,aaab....)
+ : +바로 앞의 문자가 최소 한개 이상일때
예) a+b (ab,aab,aaab...)
? : ?바로 앞의 문자가 없거나 한 개 존재하는 경우
예) a?b (b,ab,)
^ : ^ 뒤에 문자열과 같은 문자열로 시작하는 경우
      즉 문자열의 시작을 의미
    [ ]안에서 ^ 는 [ ]안의 문자를 제외한 문자를 의미
예) ^ab(ab,abc,abdr...)
$ : $앞의 문자열과 같은 문자열로 끝나는 경우 즉 문자열의 끝을 의미
예) ab$ (avab,aab,abab...)

[] : []안에 문자열중에 하나만의 문자만을 의미
예) [a-z](a부터 z까지중 한 문자)
    [0-9](0부터 9까지 숫자중 한 문자)
 [abc](a혹은 b혹은 c)

{} :{}앞의 문자열의 개수를 의미 문자{최소개수,최대개수}
    최소개수는 반드시 있어야하고 최대개수가 없는경우는 1개또는 1개이상을 의미
 하고 숫자 하나만을 적어 주엇을때는 그 숫자만큼의 개수를 의미한다.

예) abc{1,2} (abc,abcc)
    a{3} (aaa)
 a{1,} (a,aa,aaa....)

 | : or 연산자

 [^ ] : []안의 문자는 사용 못한다는 의미

예) [^abc] (a나 b나 혹은 c를 포함하지 않은 한 문자)
    [^0-9] (0에서 9까지의 숫자를 포함하지 않은 한 문자)
\s	공백 문자
\S	공백 문자가 아닌 나머지 문자
\w	알파벳이나 숫자
\W	알파벳이나 숫자를 제외한 문자
\d	숫자 [0-9]와 동일
\D	숫자를 제외한 모든 문자
() 그룹지정
'''
import re#1.정규 표현식 라이브러리 import
print(re.__file__)#패키지 위치
print('[1.패턴객체 사용 - 패턴객체.함수()]')#패턴객체 재사용 가능
email = input('이메일을 입력하세요?')
#re.compile("정규표현식") 로 Pattenr객체 생성
#\\w에서 맨 앞에 \는 w앞의 \가 이스케이프 문자를 만드는 \가 아닌 정규표현식을 만드는 \라는 것을
#표현하기 위함
#pattern=re.compile('[a-zA-Z]+@\\w+\\.[a-zA-Z]{2,3}')
#r는 raw string으로 순수 문자임을 표시(\를 하나만 써도됨) 즉 이스케이프 문자가 아니다
#r는 이스케이프 문자 형식의 정규 표현식을 사용할때 사용한다(\s 혹은 \w등)
pattern=re.compile(r'[a-zA-Z]+@\w+\.[a-zA-Z]{2,3}')
print(f'value:{pattern},type:{type(pattern)}')
print(dir(pattern))
#패턴객체.match(대상문자열)로 Match객체 생성
#match()메소드는 대상 문자열이 패턴에 일치하면 Match객체 반환 일치하지 않으면 None반환
match = pattern.match(email)
print(f'value:{match},type:{type(match)}')
if match:
    print('이메일 형식입니다')
else:
    print('이메일 형식이 아닙니다')
#패턴객체.findall(대상문자열):패턴과 일치하는 모든 문자열을 리스트로 반환, 불일치시 []반환
list_=pattern.findall(email)
print(f'value:{list_},type:{type(list_)}')
if list_:
    print('이메일 형식입니다')
else:
    print('이메일 형식이 아닙니다')

print('[2.패턴객체 미 사용 - re.함수()]')#재사용하지 않고 한번만 사용시
print(re.match(r'[a-zA-Z]+@\w+\.[a-zA-Z]{2,3}',email))
print(re.findall(r'[a-zA-Z]+@\w+\.[a-zA-Z]{2,3}',email))

log="[17.07.11 23:29:11] [INFO ]  [eclipse.galileo-bean-thread-50618297 galileo.site.SiteBean:317 ] - ##galileo_bean end. MessageExchange_ID:ID:localhost-15a6308ba1c-6:86071562";
pattern = re.compile(r'\[(\d{2}\.\d{2}\.\d{2}\s\d{2}:\d{2}:[0-9]{2})\]\s\[([A-Z]{4})\s\]\s{2}\[(.+)\]\s-\s(.+)')
match = pattern.match(log)
print(match)
#그룹으로 지정한 패턴을 추출
'''
groups()는 일치하는 문자열을 튜플로 반환
group(인덱스)는 인덱스에 해당하는 문자열반환
group() 혹은 group(0)는 전체 문자열 반환
'''
if match:
    print(f'그룹:{match.groups()}')
    print(f'그룹의 수:{len(match.groups())}')
    print(f'매칭된 전체 문자열:{match.group()}')
    print(f'매칭된 전체 문자열:{match.group(0)}')
    print(f'매칭된 인덱스가 1인 문자열:{match.group(1)}')
    print(f'매칭된 시작되는 대상 문자열의 인덱스:{match.start()}')
    print(f'매칭된 끝나는 대상 문자열의 인덱스:{match.end()},대상문자열의 길이:{len(log)}')
    for word in match.groups():
        print(word.strip())

결과)

 

Iterable05폴더 생성

 

 

str1.py

'''
순서가 있는 자료형(시퀀스 객체):str,list,tuple,range
공통 기능
1. (not) in 연산자로 요소(객체) 존재 파악
2. 인덱싱([인덱스]) 및 슬라이싱([시작인덱스 : 끝인덱스])
3. + 나 * 연산자로 시퀀스객체를 연결(+)하거나 같은 시퀀스객체를 배수(*)로 늘릴 수 있다
   단,range객체는 list로 변환후 +,*를 적용하자
   그리고 *연산자 사용시 0이나 음수를 곱하면 빈 객체가 된다
4. len(시퀀스객체)함수는 저장된 요소의 갯수 반환
'''
print('[빈 문자열 만들기]')
a=''#"",'''''',""""""
#len(반복가능한 객체)는 모든 반복 가능한 객체의 요소 수를 반환
print(f'value:{a},len:{len(a)},type:{type(a)}')
print('[NOT 빈 문자열 만들기]')
a='PYTHON'
print(f'value:{a},len:{len(a)},type:{type(a)}')
#순서가 있는 자료형(str,list,tuple,range)들은 각 요소에 인덱스로 접근 가능
#시퀀스객체[인덱스]
#인덱스는 양수(인덱스는 0부터 시작하고 왼쪽기준) 혹은 음수(인덱스는 -1부터시작하고 오른쪽 기준)
print('[인덱싱:인덱스로 요소에 접근]')
#index = int(input(f'추출할 문자의 인덱스를 입력(단,최대값은 {len(a)-1})?'))
#print(a[index])
#인덱스 범위를 벗어난 경우 - IndexError: string index out of range
print('[문자열에 for문 적용하기]')
for index in range(len(a)):
    print(f'인덱스:{index},요소:{a[index]}')

#enumerate(순서가 있는 자료형 즉 시퀀스객체): 리스트, 튜플, 문자열객체,range객체의 요소의 순서(인덱스)와 요소를
#튜플로 묶어서 enumerate 객체(반복가능한 객체)로 반환
#※ 보통 enumerate 함수는 for문과 함께 자주 사용된다
print('-' * 30)
for element in enumerate(a):
    print(element)
print('-' * 30)
for index,element in enumerate(a):#튜플을 구조분해(언패킹)해서 각각의 변수에 저장
    print(f'인덱스:{index},요소:{element}')

#시퀀스객체[인덱스]=새로운 요소로 변경하기
#a[0]='B'#TypeError: 'str' object does not support item assignment
#※문자열(불변-IMMUTABLE객체)의 값을 변경하려면 리스트로 변환후 변경해야 한다
#1.먼저 문자열을 리스트로 변환한다
b=list(a)
print(f'value:{b},len:{len(b)},type:{type(b)}')
#2.특정 인덱스의 문자열을 변경한다
b[0]='B'
print(f'value:{b},len:{len(b)},type:{type(b)}')
c=str(b)
print(f'value:{c},len:{len(c)},type:{type(c)}')
#방법1]join()함수 사용
c=''.join(b)
print(f'value:{c},len:{len(c)},type:{type(c)}')
#방법2]리스트의 각 요소를 문자열에 누적
c=''
for e in b:
    c+=e
print(f'value:{c},len:{len(c)},type:{type(c)}')
print('[슬라이싱:인덱스를 사용해서 특정 범위의 요소들 추출]')
#슬라이싱은 시퀀스 객체에만 적용됨
#※슬라이싱은 항상 오른쪽 방향으로 슬라이싱이 되야 한다
d='ABCDEFG'
#[시작인덱스:끝인덱스] - 시작인덱스부터  끝인덱스-1까지
print(d[1:1])#빈 문자열.슬라이싱 방향이 왼쪽임으로(1부터 0으로)
print(d[1:3])
print(d[1:-3])#1부터 -4(-3-1)까지
print(d[-1:-3])#빈 문자열.슬라이싱 방향이 왼쪽
#[:끝인덱스] -  처음부터 끝인덱스-1까지
print(d[:0])#빈 문자열.슬라이싱 방향이 왼쪽
print(d[:-1])
#[시작인덱스:] -  시작인덱스부터 끝까지
print(d[0:])
print(d[-len(d):])
#[:] -  모든 요소 슬라이싱
print(d[:])

#in (not in)  연산자 : 모든 시퀀스 객체에 공통으로 적용될수 있는 연산자
#                     객체안의 특정 요소의 존재여부를 파악할 수 있는 연산자
#찾을객체 in 반복가능한 시퀀스객체
e='JAVA'
print('A' in e)
print('A' not in e)
print('a' in e)
print('AVA' in e)

while True:
    email = input('이메일 주소를 입력하세요?')
    if '@' not in email:
        print('이메일 형식이 아닙니다')
    else:
        break
# * 및 +(문자열 연결)
print('HELLO '+'WORLD')
print('HELLO ' * 10)

결과)

str2.py

#str객체의 주요 메소드
from pprint import pp


def pprint(val):
    print(f'value:{val},type:{type(val)}')

print('1. join(Iterable 객체)')#주로 리스트를 문자열로 변환
#※단,리스트의 모든 요소는 문자열이어야 한다.리스트 요소중 하나라도 숫자인 경우 에러발생
#이런 경우 map함수를 보통 같이 적용한다.
a=['한라산','설악산','대둔산','덕유산']
b='▲'.join(a)
pprint(b)
a.append(2023)
print(a)
#b='▲'.join(a)#TypeError: sequence item 4: expected str instance, int found
b='▲'.join(map(str,a))
pprint(b)
print('2. split([구분자]) : 특정 구분자로 split해서 리스트로 반환(구분자 디폴트값은 공백)')
c=b.split('▲')
pprint(c)
#구분자가 없는 경우 문자열 전체가 리스트의 하나의 요소로 생성된다
d=b.split()
pprint(d)
print('3.replace():문자열 치환')
e='Hello World'
print(e.replace('World','Python'))
print(e)#str객체는 불변
print('4.lower():소문자로 변경')
print(e.lower())
print('5.upper():대문자로 변경')
print(e.upper())
print('6. lstrip([제거할 문자열 집합]):왼쪽부터 공백 혹은 지정한 문자열 집합 제거')
#※해당 값의 모든 조합으로 제거
#  제거할 문자열 집합은 제거할 단어를 넣거나 혹은 그 단어를 구성하는 알파벳를 넣자
#  단,공백이 있는 경우 반드시 공백도 포함시키자
f= '       Hello      World   '
print(f'X{f.lstrip()}Y')
print(f"X{f.lstrip(' Hello')}Y")
print(f"X{f.lstrip('He lo')}Y")
print(f"X{f.lstrip(' HeloWrd')}Y")
print('7. rstrip([제거할 문자열 집합]):오른쪽부터 공백 혹은 지정한 문자열 집합 제거')
print(f'X{f.rstrip()}Y')#X       Hello      WorldY
print(f"X{f.rstrip(' Hello')}Y")#X       Hello      WorldY
print(f"X{f.rstrip('dlorW ')}Y")#X       HeY
print(f"X{f.lstrip(' HeloWrd')}Y")#XY
print('8. rstrip([제거할 문자열 집합]):양쪽에서 공백 혹은 지정한 문자열 집합 제거')
print(f"X{f.strip()}Y")#XHello      WorldY
print(f"X{f.strip(' Helord')}Y")#XWY
print('9.zfill(자리수):0으로 자리수 채우기')
print('7'.zfill(2))
print('3.14'.zfill(6))
print('3.14'.zfill(3))#문자열의 길이보다 지정된 자리 폭의 길이가 작거나 같으면 아무것도 채우지 않는다
print('10.find()/rfind():찾은 문자열의 인덱스 반환')
g='Hello! He is a good'
print(g.find('He'))#왼쪽에서 부터 찾는다
print(g.rfind('He'))
print(g.find('he'))#찾은 문자열이 없는 경우 -1 반환
print('11.index()/rindex():찾은 문자열의 인덱스 반환')
print(g.index('He'))
print(g.rindex('He'))
#print(g.index('he'))#찾은 문자열이 없는 경우 ValueError: substring not found
print('12.count(문자열):문자열의 빈도수 반환')
print(g.count('He'))
print(g.count('o'))
print(g.count('he'))

결과)

list1.py

from Iterable05.str2 import pprint


def pprint(obj):
    #bool타입은 int타입으로도 체크 가능
    end = '\n' if isinstance(obj,int) or isinstance(obj,float) else ''
    print(f"값:{obj},타입:{type(obj)}",end=end)
    if not isinstance(obj,int) and not isinstance(obj,float):
        print(f',요소 수:{len(obj)}')

print('[리스트 생성 첫번째 : 빈 리스트]')#동적으로 요소 추가시 주로 사용
#방법1-[]
a=[]
pprint(a)
#방법2-list():list클래스의 생성자
a=list()
pprint(a)
print('[리스트 생성 두번째 : 같은 타입의 객체(요소) 저장]')
b=[1,2,3,4,5]#변수 하나에 여러개 데이타 설정:패킹
pprint(b)
print('[리스트 생성 세번째 : 다른 타입의 객체(요소) 저장]')
c=['가길동',20,3.14,True]
pprint(c)
print('[리스트 언 패킹(구조분해)]')
#리스트의 각 요소를 여러 변수에 나눠 담는 것:언패킹(구조분해)
#단, 변수의 개수가 요소의 개수와 정확히 일치해야 한다
c1,c2,c3,c4 = c
pprint(c1)
pprint(c2)
pprint(c3)
pprint(c4)#isinstance(a,int) int타입으로도 처리된다
print('[리스트 생성 네번째 : list(str객체)]')
list_=list('PYTHON')
pprint(list_)
print('[리스트 생성 다섯번째 : list(range객체)]')
list_ = list(range(5))
pprint(list_)
print('[요소 추가하기:append()]')
#※빈 리스트에 값(요소)을 할당할때는 [인덱스]=값 으로 할당하는게 아니라 append()함수를 이용해서 할당한다
#a[0]='가길동'#IndexError: list assignment index out of range
a.append('가길동')
a.append(20)
a.append('송파구')
pprint(a)
print('[요소 변경하기 : 리스트객체[인덱스]=새로운 요소]')
a[1]=40
a[2]='금천구'
pprint(a)
#a[3]='코스모'#IndexError: list assignment index out of range
a.append('코스모')
pprint(a)
print('[인덱싱:리스트객체[인덱스]]')
print(f'a[0]:{a[0]},a[1]:{a[1]},a[2]:{a[2]}')
print(f'요소 수 얻기:{len(a)}')
print('[슬라이싱:인덱스를 사용해서 특정 범위의 요소들 추출]')
#[시작인덱스:끝인덱스] - 시작인덱스부터  끝인덱스-1까지
print(a[1:1])#빈 리스트.슬라이싱 방향이 왼쪽임으로(1부터 0으로)
print(a[1:3])#[40,'금천구']
print(a[1:-3])#빈 리스트[]
print(a[-1:-3])#빈 리스트[]
#[:끝인덱스] -  처음부터 끝인덱스-1까지
print(a[:0])#빈 리스트[]
print(a[:-1])#['가길동', 40, '금천구']
#[시작인덱스:] -  시작인덱스부터 끝까지
print(a[0:])#['가길동', 40, '금천구', '코스모']
print(a[-len(a):])#['가길동', 40, '금천구', '코스모']
#[:] -  모든 요소 슬라이싱
print(a[:])#['가길동', 40, '금천구', '코스모']

f=['가','나','다','라']
for e in f:
    print(e)

for index in range(len(f)):
    print(f'인덱스:{index},요소:{f[index]}')
print('-'*30)
for index,ele in enumerate(f):
    print(f'인덱스:{index},요소:{ele}')

결과)

'Python' 카테고리의 다른 글

83일차 2023-07-05  (0) 2023.07.06
82일차 2023-07-04  (0) 2023.07.04
81일차 2023-07-03  (0) 2023.07.03
79일차 2023-06-29  (0) 2023.06.29
78일차 2023-06-28  (0) 2023.06.28