2020.08.01 내장함수 count , remove 추가
2020.08.03 내장함수 any 와 all 추가
2020.08.05 python string find() 추가
파이썬에서는 타입을 지정하지 않아도 된다.
number = 3
string = "jakdu"
# global 변수: 함수 밖에서 만들어진 변수,
# 함수의 실행/종료와는 관계 없이 항상 존재하는 변수
global x = 10
for n in range( 0 , 10):
print(n)
a = [1 , 2 , 3 , 4]
for i in a:
print(i)
for i in range(100):
if i % 2 == 0:
continue
print(i)
1
3
5
...(생략)
95
97
99
a = [1 , 2 , 3 , 4]
for n , v in enumberate(a):
print(n,v)
a = [1,2,3]
a.insert(0,4)
print(a) # [4,1,2,3]
a.insert(3,5)
print(a) # [4,1,2,5,3]
a = [1,2,3,1,2,3]
a.remove(3)
print(a) # [1,2,1,2,3]
pop 은 리스트의 맨 마지막 요소를 돌려주고 그 요소는 삭제한다.
a= [1,2,3]
a.pop()
print(a) # [1,2]
a = [1 , 2 , 3]
a.pop(1)
print(a) # [1,3]
권장하는 방법 )
if not x:
print("List x is Empty")
권장하지 않는 방법 )
if not len(x):
print("List x is Empty")
[(표현식) for (배열의 원소) in (배열)]
numbers2 = [x for x in range(1 , 10)]
print(numbers2)
[1, 2, 3, 4, 5, 6, 7, 8, 9]
test_num3 = [x for x in range(1 , 10) if x % 2 ==0]
print(test_num3)
# [2, 4, 6, 8]
test_num3 = [x*2 for x in range(1, 10) if x %2 ==0]
print(test_num3)
# [4, 8, 12, 16]
cubes = [n **3 for n in range(1,10)]
print(cubes)
# [1, 8, 27, 64, 125, 216, 343, 512, 729]
for b in broad_list:
for c in company_list:
if b == c:
duplicate_name.append(c)
이렇게 되어있는 것을
list comprehension 을 사용하게 되면
duplicate_name = []
[duplicate_name.append(c) for c in company_list for b in broad_list if b==c]
https://velog.io/@ash3767/python-for-else-while-else
a = {1:'a', 2:'b'}
print(a[1]) # 'a'
print(a[2]) # 'b'
z = zip(['a', 'b', 'c'], [1, 2, 3])
for i in z:
print(i, end=' ') # ('a', 1) ('b', 2) ('c', 3)
zip 을 사용하게 되면 이와 같이 튜플로 뱉어 내게 된다.
만약에 list 로 감싸게 된다면 ??
d = list(zip(['a', 'b', 'c'], [1, 2, 3]))
print(d) # [('a', 1), ('b', 2), ('c', 3)]
zip 을 딕셔너리로 감쌀수도 있다.
d = dict(zip(['a', 'b', 'c'], (1, 2, 3)))
print(d) # {'a': 1, 'b': 2, 'c': 3}
d = dict(a=1, b=2, c=3)
vo = d.items() # 뷰 객체 얻음
for kv in vo:
print(kv, end=' ') # ('a', 1) ('b', 2) ('c', 3)
d['a'] += 3 # 딕셔너리 수정
d['c'] -= 2 # 딕셔너리 수정
for kv in vo:
print(kv, end=' ') # ('a', 4) ('b', 2) ('c', 1)
리스트 컴프리헨션 뿐만 아니라 딕셔너리 컴프리헨션도 가능하다.
d1 = dict(a=1, b=2, c=3)
d2 = {k: v * 2 for k, v in d1.items()}
d3 = {k: v * 2 for k, v in d2.items()}
print(d1) # {'a': 1, 'b': 2, 'c': 3}
print(d2) # {'a': 2, 'b': 4, 'c': 6}
print(d3) # {'a': 4, 'b': 8, 'c': 12}
people = ["철수" , "영희" , "길동" , "순희"]
{ p : 0 for p in people }
{'철수': 0, '영희': 0, '길동': 0, '순희': 0}
scores = {'철수': 50, '영희': 80, '길동': 90, '순희': 60, '전학생': 100}
scores = { name: score for name, score in scores.items() if name != '전학생'}
print(scores)
grades = { name: 'PASS' if value > 70 else 'No-PASS' for name, value in scores.items()}
print(grades)
pgm_lang = {
"java": 20,
"javascript": 8,
"c": 7,
"r": 4,
"python": 28 }
result1 = sorted(pgm_lang.keys())
print(result1)
# ['c', 'java', 'javascript', 'python', 'r']
result2 = sorted(pgm_lang.items())
print(result2)
# [('c', 7), ('java', 20), ('javascript', 8), ('python', 28), ('r', 4)]
sort: 기본값이 오름차순으로 되어있습니다.
nums = [1, 10, 5, 7, 6]
nums.sort()
print(nums)
# [1, 5, 6, 7, 10]
num_list = [1,10,5,7,6]
num_list.sort(reverse = True)
print(num_list)
# [10 , 7 , 6 , 5 , 1]
nums = [1 , 10 ,5 , 7 , 6 ]
nums.reverse()
print(nums)
# [6, 7, 5, 10, 1]
nums = [1,10,5,7,6]
nums.sort()
print(nums)
# [1 ,5 ,6 ,7 ,10]
nums = [1,10,5,7,6]
nums.sort(reverse=True)
print(nums)
#[10 ,7 ,6 ,5 ,1]
string = " my name is jakdu"
string = string.split()
print(string) # ['my', 'name', 'is', 'jakdu']
string.sort(key=len)
print(string) # ['my', 'is', 'name', 'jakdu']
튜플 패킹은 하나 이상의 값을 튜플로 묶는 행위 이다 .
tri_one = ( 12 , 15 )
print(tri_one) # ( 12 ,15 )
tri_two = 23 , 12 # 사실 튜플 패킹은 소괄호가 없어도 됨
print(tri_two) # ( 23 , 12 )
튜플에 저장된 값을 꺼내는 행위를 튜플 언패킹이라고 한다.
tri_three = ( 12 , 25 )
bt , ht = tri_three
print(bt , ht) # 12 25
둘 이상의 값을 리스트로 묶어서 하나의 변수에 저장하는 것도 가능하다.
nums = (1, 2, 3, 4, 5)
first, *other, second = nums
print(first, other, second) # 1 [2, 3, 4] 5
튜플이 아니라 리스트로 묶인다는것을 기억해야한다.
당연히 뒤나 앞을 묶을 수도 있다.
*first, other, second = nums
print(first, other, second) # [1, 2, 3] 4 5
first, other, *second = nums
print(first, other, second) # 1 2 [3, 4, 5]
언패킹은 튜플뿐만이 아니라 리스트에서도 동작을 한다 .
def ret_nums():
return 1,2,3,4,5
n , *others = ret_nums() # 반환되는 값이 언패킹 되어 변수들에 저장
print(n) # 1
print(others) # 리스트로 묶였다. [2,3,4,5]
기본 사용법과 형태
num_list[start:end:step]
리스트에서도 인덱싱 기능 사용이 가능하며 , 슬라이싱은 나눈다는 의미를 가진다.
각각 start , end , step 모두 양수와 음수를 가질 수 있습니다.
s_list = [1, 2, 3, 4, 5]
print(s_list[1:4:1])
# [ 2 , 3 , 4 ]
a = [1,2,3,4,5]
print(a[2:4])
# 결과 값 : [3,4]
a[start:]
num_list = [1,2,3,4,5]
print(a[1:]) # [2,3,4,5]
num_list = [1,2,3,4,5]
print(a[-3:]) # [3,4,5]
a[:end]
num_list = [1,2,3,4,5]
print(num_list[:3]) # [1,2,3]
print(num_list[:-1] # [1,2,3,4]
num_list = [1,2,3,4,5]
print(num_list[2:4]) # [3,4]
print(num_list[1:3]) # [2,3]
num_list = [1,2,3,4,5]
# 전체를 거꾸로 가져옵니다.
print(a[::-1]) # [5,4,3,2,1]
args 는 arguments 의 줄임말이다.
*args 는 키워드 되지 않은 가변 갯수의 인자들을 함수에 보낼때 사용한다.
굳이 꼭 args 라고 사용하지 않아도 되지만 , 저것으로 쓰자고 통용 되어있는것 같다.
jakdu 이렇게 적어도 사실 무방하긴 하다.
이 지시어는 여러 개 (복수개) 의 인자를 함수로 받고자 할때 쓰인다.
def func(*args):
print(args)
func() # ()
func(1) # (1,)
func(1, 2) # (1, 2)
func(1, 2, 3) # (1, 2, 3)
def func(*args) 값들이 튜플로 묶여서 args 에 전달이 된다.
다른 예시를 좀 더 보겠습니다.
def test_var_args(f_arg, *argv):
print("첫 번째 인자:", f_arg) # 첫 번째 인자: 야숩
for arg in argv:
print("*argv의 다른 인자", arg)
# *argv의 다른 인자 python
# *argv의 다른 인자 달걀
# *argv의 다른 인자 test
test_var_args('야숩', 'python', '달걀', 'test')
def who(a, b, c):
print(a, b, c, sep=',')
d = dict(a=1, b=2, c=3)
who(*d) # 이렇듯 *을 붙이면 키가 매개변수에 전달된다.
# a, b, c
who(**d) # ** 을 붙이면 값이 매개변수에 전달된다.
# 1, 2 , 3
kwargs 는 keyword argument 의 줄임 말이다.
def func(**args):
print(args) # args 는 딕셔너리
func(a=1) # {'a':1} 생성되어 args에 전달
func(a=1, b=2) # {'a':1 , 'b':2} 생성되어 args 에 전달
func(a=1, b=2, c=3) # {'a':1 ,'b':2,'c':3}
def greet_me(**kwargs):
if kwargs is not None:
for key, value in kwargs.items():
print("%s == %s" % (key, value)) # python3: print("%s == %s" % (key, value))
greet_me(name="yasoob")
**kargs 는 (키워드 = 특정값) 형태로 함수를 호출할 수 있다.
그것은 그대로 딕셔너리 형태로 {"키워드" : "특정 값"}
이렇게 함수 내부로 전달이 된다.
매개변수 선언에 있어서 다음과 같이 *args 와 **kargs 를 동시에 둘 수있다.
def func(*args1, **args2):
print(args1) # args 은 튜플
print(args2) # args2 는 딕셔너리
print(func(1, a=1))
# (1,)
# {'a': 1}
print(func(1, 2, a=1, b=2))
# (1, 2)
# {'a': 1, 'b': 2}
*args 와 **kwargs 는 순서가 중요한데 ,
*
변수를**
변수보다 앞에 두어야 한다.
def name( username , *args , **kwargs):
그래야 python 에서 **
변수를 어디부터 어디까지 담아야 할지를 인식한다.
def func(a):
if a > 10:
return "a > 10"
else :
return "a < 10"
# 3항 연산자
def func2(a):
return "a가 10보다 크다" if a > 10 else "a가 10보다 작다."
num_list = [1,1,2,2,2,3,3,4]
num_list.count(1) # 2
num_list.count(2) # 3
num_list.count(3) # 2
num_list.count(4) # 1
list의 remove메소드에 의한 삭제
list.remove(찾을아이템)
찾을 아이템이 없으면 ValueError 발생
num_list = [1,1,2,2,2,3,3,4]
num_list.remove(3)
print(num_list) # [1,1,2,2,2,3,4]
>>> any([False , False , False])
False
>>> any([False , True , False])
True
any 함수는 iteration 이 가능한 객체를 받아 그 항목을 돌면서 어느 하나라도 True 이면 결과로 True 를 리턴 한다는 것을 알 수있다.
여러 개 중에 어느 하나라도 참이면 참이다.
>>> all([False , True , False])
False
>>> all([True , True , True])
True
any 와는 반대로 Iteration 을 해서 그 내용이 모두 참이어야 참이다.
여러개 중에 모두 참이면 참
https://www.programiz.com/python-programming/methods/string/find
str = "abcabcabc"
index = str.find("b") # index 1
변수 index 에는 1이 반환 됩니다.
변수 str 에 "abcabcabc" 문자 b 가 어디에 있는지 find 함수로 검색했습니다.
만약 지정한 문자를 찾지 못한 경우에는 -1 을 반환합니다.
str = "abcabcabc"
index = str.find("b" , 2 ) # index 4
find 함수의 두 번째 파라미터는 시작 위치를 의미한다.
생략을 한다면 인덱스 0 부터 시작한다.
>>> a = "happy"
>>> a.find('y')
4
>>> a = "happy"
>>> a.index('h')
0
num='111'
fake='hundred'
hanguel='한글'
#isalpha 사용
print(num.isalpha()) # False
print(fake.isalpha()) # True
print(hanguel.isalpha()) # True
num='111'
fake='hundred'
hanguel='한글'
#isdigit 사용
print(num.isdigit())
print(fake.isdigit())
print(hanguel.isdigit())
글자 또는 숫자로 구성되어있으면 : True
아니면 False 값 반환
문장 전체에 대해서는 공백이 포함되어있기 때문에 False
숫자만 지정했을때에는 True
공백을 지정했을때에는 False
문자만 지정했을떼에는 True
string.startswith() 는 괄호 안에 적은 문자열로 시작하는지를 확인합니다.
만약에 있다면 True
없다면 False 를 반환합니다.
string = "string jakdu"
print(string.startswith("string"))
# True
string_index = "string jakdu"
print(string_index.startswith("ing" , 2 , 5 )
# True
number =1
print(number) # 1
print(type(number)) # <class 'int'>
print(number is None) # False
print(type(number) is int) # True
none_test = None
print(none_test) # None
print(type(none_test)) # <class 'NoneType'>
print(none_test is None) # True
print(type(none_test) is None) # False