python 학습 노트 - 기초 편 계속
list 는 질서정연 한 항목 을 처리 하 는 데이터 구조 로 목록 에 서열 을 저장 할 수 있 는 항목 입 니 다.목록 은 가 변 적 인 데이터 형식 입 니 다.
shoplist = ['apple','amngo','carrot','banana']
list 의 주요 방법 은:
list 와 tuple - 원 그룹
list 끝의 요 소 를 삭제 하려 면
pop()
지정 한 위치의 요 소 를 삭제 하려 면 pop(i)
방법 을 사용 하 십시오. 그 중에서 i
은 색인 위치 에 있 는 또 다른 서열 표 는 원 그룹: tuple 입 니 다.tuple 은 list 와 매우 유사 하지만 tuple 은 초기 화 되면 수정 할 수 없습니다.classmate = ('Michael','Bob','Tracy')
한 요소 만 있 는 tuple 을 정의 하면: t = (1,)
원본 그룹 에서 가장 많이 사용 되 는 곳 은 출력 에 사 용 됩 니 다:#!/usr/bin/python
# Filename: print_tuple.py
age = 22
name = 'Swaroop'
print '%s is %d years old' % (name, age)
print 'Why is %s playing with that python?' % name
결과:
$ python print_tuple.py
Swaroop is 22 years old
Why is Swaroop playing with that python?
print 문 구 는% 기호 에 따 른 항목 원본 문자열 을 사용 할 수 있 습 니 다.
사전 - dict
names = {'Michael':95,'Bob':75,'Tracy':85}
for name, address in names.items():#
print '%s is %d years old.' %(name, address)
실현 원리: 이름 을 지정 합 니 다. 예 를 들 어 Michael, dict 는 내부 에서 Michael 에 대응 하 는 저장 성적 의 '페이지' 를 직접 계산 할 수 있 습 니 다. 즉, 95 라 는 숫자 에 저 장 된 메모리 주 소 를 직접 꺼 내 서 속도 가 매우 빠 릅 니 다.함수: 함수 명 은 사실 함수 대상 을 가리 키 는 인용 입 니 다. 함수 명 을 하나의 변수 에 부여 할 수 있 습 니 다. 이 함수 에 '별명' 을 붙 인 것 과 같 습 니 다.
a = abs # a abs
a(-1) # a abs
빈 함수:
def nop():
pass
Python 의 반환 다 중 값 은 사실 tuple 을 되 돌려 주 는 것 입 니 다.
기본 매개 변수
def add_end(L = []):
L.append("END")
return L
b = add_end()
print b
c = add_end()
print c
결과:
['END']
['END','END']
왜 이러 지?Python 함수 가 정의 되 었 을 때 기본 매개 변수
L
는 계산 되 었 습 니 다. 즉 []
기본 매개 변수 L
도 하나의 변수 이기 때문에 대상 []
을 가리 키 고 이 함 수 를 호출 할 때마다 L
내용 이 바 뀌 면 다음 호출 시 기본 매개 변수의 내용 이 바 뀌 어 함수 정의 []
가 아 닙 니 다.기본 매개 변 수 를 정의 할 때: 기본 매개 변 수 는 변 하지 않 는 대상 을 가 리 켜 야 합 니 다.개선:def add_end2(L = None):
if L is None:
L = []
L.append('END')
return L
d = add_end2()
print d
e = add_end2()
print e
결과:
['END']
['END']
역귀 함수
def fact(n):
if n == 1:
return 1
return n*fact(n-1)
print fact(100)
이렇게 계산 할 수 있 습 니 다
fact(n) = 1 × 2 × 3 × ... × (n-1) × n
재 귀 함 수 를 사용 하여 스 택 이 넘 치 는 것 을 방지 해 야 합 니 다.컴퓨터 에서 함수 호출 은 스 택 (stack) 이라는 데이터 구 조 를 통 해 이 루어 집 니 다. 한 함수 호출 에 들 어 갈 때마다 스 택 프레임 을 추가 하고 함수 가 돌아 올 때마다 스 택 프레임 을 한 층 줄 입 니 다.스 택 의 크기 가 무한 한 것 이 아니 기 때문에 재 귀적 호출 횟수 가 너무 많 으 면 넘 칠 수 있 습 니 다.해결 방법: 끝 재 귀 최적화
는 함수 가 돌아 올 때 함수 자 체 를 호출 하고 return 문 구 는 표현 식 을 포함 하지 못 하 는 것 을 말한다.이렇게 하면 컴 파일 러 나 해석 기 는 꼬리 재 귀 를 최적화 시 켜 재 귀 자 체 를 몇 번 호출 하 든 하나의 스 택 프레임 만 차지 하고 스 택 이 넘 치 는 상황 이 발생 하지 않도록 할 수 있다.def fact2(n):
return fact_iter(n,1)
def fact_iter(num,product):
if num == 1:
return product
return fact_iter(num - 1,num * product)
문자열 방법
startwith 방법 은 문자열 이 주어진 문자열 로 시작 되 는 지 시험 하 는 데 사 용 됩 니 다.in 연산 자 는 주어진 문자열 이 다른 문자열 의 일부분 인지 확인 하 는 데 사 용 됩 니 다.find 방법 은 주어진 문자열 이 다른 문자열 에 있 는 위 치 를 찾 는 데 사 용 됩 니 다.
고급 특성
목록, 원본, 문자열 은 모두 시퀀스 입 니 다.서열 의 두 가지 주요 특징 은:
슬라이스
list 나 tuple 의 일부 요 소 를 가 져 오 는 것 은 흔 한 작업 입 니 다.list: 목록 L 이 있다 면
L = []
L[0:3]
색인 0 부터 찾 아 색인 3 까지 는 알 지만 색인 3 은 포함 되 지 않 는 다 고 밝 혔 다.L[:10:2]
앞의 10 개 수 치 를 나타 내 고 두 개 당 하 나 를 취한 다.L[::5]
모든 값, 다섯 개 당 하나씩tuple:
(0,1,2,3,4,5)[:3]
(0,1,2)
문자열:
'abcdefg'[:3]
'abc'
'ABCDEFG'[::2]
'ACEG'
번복
dict:
for key in d # , key
for value in d.itervalues() # value
for k,v in d.iteritems() # key value
대상 이 교체 할 수 있 는 지 판단 하기:
from collections import Iterable
isinstance('abc',Iterable) # str
enumrate
함수: list 를 색인 으로 바 꿀 수 있 습 니 다. - 요소 맞아요.for i, value in enumrate(['a','b','c']):
print i,value
목록 생 성식 생 성 [1×1,2×2, ... ,10×10] 어떻게?
>>>[x*x for x in range(1,11)]
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
2 층 순환 으로 전체 배열 생 성:
>>> [m + n for n in 'abc'for m in 'def']
['da', 'ea', 'fa', 'db', 'eb', 'fb', 'dc', 'ec', 'fc']
현재 디 렉 터 리 에 있 는 모든 파일 과 디 렉 터 리 이름 을 보 여 줍 니 다:
>>> import os
>>> [d for d in os.listdir('.')]
['DLLs', 'Doc', 'helloworld.py', 'include', 'Lib', 'libs', 'LICENSE.txt', 'NEWS.txt', 'python.exe', 'pythonw.exe', 'README.txt', 'Scripts', 'tcl', 'Tools', 'var.py', 'w9xpopen.exe']
목록 생 성식 은 두 개의 변 수 를 사용 하여 list 를 생 성 할 수 있 습 니 다.
>>> d = {'x':'A','y':'B','z':'C'}
>>> [k+'='+v for k,v in d.iteritems()]
['y=B', 'x=A', 'z=C']
list 의 모든 문자열 을 소문 자로 바 꿉 니 다:
>>> L = ['Hello','World','IBM','Apple']
>>> [s.lower() for s in L]
['hello', 'world', 'ibm', 'apple']
생 성 기 는 python 에서 순환 하면 서 계산 하 는 메커니즘 을 생 성기 (Generator) 라 고 합 니 다.
>>> g= (x*x for x in range(1,10))
>>> g
at 0x0299DCD8
>>> g.next()
1
>>> g.next()
4
>>> g.next()
9
>>> g.next()
16
>>> g.next()
25
>>> g.next()
36
>>> g.next()
49
>>> g.next()
64
>>> g.next()
81
>>> g.next()
Traceback (most recent call last):
File "", line 1, in
StopIteration
피 보 나치 수열 의 앞 N 개 수 를 출력 합 니 다:
def fib(max):
n, a, b = 0, 0, 1
while n < max:
print b
a ,b = b, a+ b
n = n + 1
fib(6)
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.