Python Basics I

MisCaminos·2021년 2월 17일
0

python & data analysis

목록 보기
1/7
post-thumbnail

python basics review notes:

Variables & Types

python은 object-oriented language이다. python에서는 variable들이 object다.(Java와는 다르게) variable을 생성할때에 선언을 할 필요가없다!

2가지 number types가 지원된다:
-integers
-floats

myfloat=7.0
myfloat=float(7.0)

integer값을 float type으로 만듥싶다면 위와같이 float()을 사용하면된다.

2가지 방식으로 string variable을 만들수있다 - single & double quotation

mystring="hello"
yourstring='hi'

위와 같이 yourstring 변수는 ' ' (single-quotation)으로 작성이된다.
(Don't 또는 Tom's같이 single quotation이 필요한 경우엔 double을 써야한다)

신기하게도
여러Type의 여러변수를 한꺼번에 만들 수 있다.

x,y,z= "string",5,3.141592

그러나,
숫자와 문자열은 섞은 operator은 지원되지않는다.

one=1
two=2
hello="hello"

#This will NOT work
print(one+two+hello)

Lists

배열이다. 여러 type의 variable을 가질수있고 미리 배열 사이즈를 정해놓지않아도 된다.
(Java의 Arraylist와 비슷한것같다)

mylist=[]
mylist.append(1)
mylist.append(2)
mylist.append(3)

for x in mylist:
	print (x)

append()를 통해 mylist라는 list에 숫자 1,2,3을 넣고
for loop으로 하나씩 출력을하는 코드이다.

print(mylist[2])

이렇게 mylist의 가장 마지막 index=2의 값을 출력할 수 있다.

print(mylist)

이렇게 list를 통채로 출력하려고하면, mylist 객체가 저장된 주소값이 나올까??
아니다!
mylist라는 list안에 값들이 출력된다.
==> [1, 2, 3] 이렇게.

Basic Operators

Arithmetic operators는 보통 계산방식과 같다.
exponential을 계산하기위해서는

squared = 7 ** 2
cubed = 2 ** 3
print(squared)
print(cubed)

출력되는 값은 squared=49, cubed=8

Operators with Strings

lotsofhellos = "hello" * 10
print(lotsofhellos)

hello가 연이어서 10번 출력된다.

Operators with Lists

even_numbers = [2,4,6,8]
odd_numbers = [1,3,5,7]
all_numbers = odd_numbers + even_numbers
print(all_numbers)

출력결과는 [1, 3, 5, 7, 2, 4, 6, 8]

String Formatting
python은 C의 string formatting style을 사용한다.
% operator를 tuple(size가 정해진 list)의 변수를 format하기 위해 사용한다.

Basic argument specifiers:

%s - String (or any object with a string representation, like numbers)
%c - character (문자 1개)
%d - Integers
%f - Floating point numbers
%.< number of digits >f - Floating point numbers with a fixed amount of digits to the right of the dot.
%x/%X - Integers in hex representation (lowercase/uppercase)
%o - Integers in octal representation
%% - %(the percent sign) itself

예시)

# This prints out "John is 23 years old."
name = "John"
age = 23
print("%s is %d years old." % (name, age))

Basic String Operations

astring = "Hello world!"
print(astring.count("l")) #3이 출력됨
  
astring = "Hello world!"
print(astring[3:7]) #lo w이 출력됨

astring[a:b]는 index[a]부터(포함) index[b]까지(미포함)의 substring을 반환한다.
그래서 여기서는 index 3,4,5,6 문자가 출력된것이다.

extended slice syntax의 general form은 [start:stop:step]이다.

astring = "Hello world!"
print(astring[3:7])
print(astring[3:7:2]) #l 를 출력함.

위와 같은 경우에는 3부터 7(미포함)까지 한문자를 skip하는것이다.
extended slice를 응용해서 reverse string을 얻을 수 있다

astring = "Hello world!"
print(astring[::-1]) #!dlrow olleH 출력됨.

Conditions

python에서 사용되는 boolean logic은 True/False (대문자로시작함을 주의!)값을 갖는다.
condition에 두개 이상의 boolean expression을 넣으려면 and 혹은 or를 사용한다.
in operator는 list와 같은 object container에 특정 object가 있는지 확인할때에 사용한다.

statement = False
another_statement = True
if statement is True:
    # do something
    pass
elif another_statement is True: # else if
    # do something else
    pass
else:
    # do another thing
    pass

위 코드block과 같이 if, elif, else를 사용해서 condition에 해당할때에 취할 action을 정의할 수 있다. condition문장의 if statement의 끝을 맺는것으로 :이 사용되고, if에 해당할 시 취할 action 내용은 { } curly bracket이 아닌, 단순히 indent(1tab or 4spaces)만 해서 작성하면 된다.

x = [1,2,3]
y = [1,2,3]
print(x == y) # Prints out True
print(x is y) # Prints out False

여기서 사용되는 is operator은 instance를 비교하는데에 사용된다. x와 y는 같은 값을 갖더라고 서로 다른 instance이기때문에 위와같이 두번째 print문장은 false를 출력한다.

Loops

for loop 예시)

primes = [2, 3, 5, 7]
for prime in primes:
    print(prime)

while loop 예시)

# Prints out 0,1,2,3,4

count = 0
while count < 5:
    print(count)
    count += 1  # This is the same as count = count + 1

break는 loop에서 빠져나오기위해 사용되고, continue는 현재 block을 skip하고 loop을 continue 하기위해 사용된다 (Java와 동일)

using else for loops 예시)

# Prints out 0,1,2,3,4 and then it prints "count value reached 5"

count=0
while(count<5):
    print(count)
    count +=1
else:
    print("count value reached %d" %(count))

# Prints out 1,2,3,4
for i in range(1, 10):
    if(i%5==0):
        break
    print(i)
else:
    print("this is not printed because 
  for loop is terminated because of break 
  but not due to fail in condition")

Functions

code를 이해하기/사용하기 편리하도록 block으로 나눈다. reusability 또한 큰 merit이다.
python에서 block의 syntax는 아래와같다:

block_head:
    1st block line
    2nd block line
    ...

앞에서 이미 사용해본 for, if, while이 이런 block의 keyword였던것이다.
function을 구현하는 block keyword는 def이다. def옆에 작성하는 function의 이름으로 function을 호출할 수 있다.

def my_function_with_args(username, greeting):
    print("Hello, %s , From My Function!, I wish you %s"%(username, greeting))

위와같이 function은 argument를 전달받을 수있다.
그리고 아래와 같이 return keyword를 통해 값을 반환할 수 있다.

def sum_two_numbers(a, b):
    return a + b

Classes and Objects

Object를 생성하면 variables & functions를 하나의 entity로 encapsulate할 수 있다.
Class는 object를 만드는 틀(template)과 같은것이다. object는 class에 정의된 variables & functions를 갖게된다.

아주아주 간단한 class예시)

class MyClass:
    variable = "blah"

    def function(self):
        print("This is a message inside the class.")

myobjectx = MyClass()

print(myobjectx.variable)

MyClass에서 정의한 variable의 값인 string "blah"가 출력된다. function도 동일한 방법으로 호출할 수 있다.

Dictionaries

배열과 비슷하지만, index & element 대신 key & value로 정렬되어있다. key를 사용해서 store된 value를 access할 수 있다. 배열의 index와는 다르게 key는 다양한 object type이 가능하다-string, number, 심지어 list자체가 될수도있다.

phonebook = {"John" : 938477566,"Jack" : 938377264,"Jill" : 947662781}
for name, number in phonebook.items():
    print("Phone number of %s is %d" % (name, number))

이렇게 dictionary를 iterate할 수 있다. 단, list와는 다르게 dictionary는 담고있는 value들의 order를 지키지않는다. 처음 dictionary를 생성 할때 넣은 순서대로 출력되지 않을수있다.

dictionary에서 value를 remove하는 방법 예시)

phonebook = {
   "John" : 938477566,
   "Jack" : 938377264,
   "Jill" : 947662781
}
del phonebook["John"]
print(phonebook)
#또는 
phonebook.pop("John")
print(phonebook)


References: 1. [www.learnpython.org](https://www.learnpython.org/)
profile
Learning to code and analyze data

0개의 댓글