[python]基礎復習2


※ 개인 공부기록을 위한 TIL 로그입니다,,,注:コード更新Python基礎100題+私が個人的に勉強したときに覚えたもの

map()


map()はmapオブジェクトタイプを返します.そのため、listタイプに変換して置換する必要があります.
arr = list(map(int,input().split()))

global keyword


関数で関数外scopeのグローバル変数を使用するには、グローバルキー宣言を使用する必要があります.
g = 0
def foo():
    global g

List Comprehension


リストを宣言するには、次の方法を使用します.(使用する場合)
一般的に2次元リスト宣言時に使用されます.
arr = [[0]*10 for _ in range(10)]
arr2 = [list(map(int,input().split())) for _ in range(n)]
arr3 = [x for x in range(1, 10+1) if x % 2 == 0]
arr4 = [ x for x in range(10) if x < 5 if x % 2 == 0 ]

in, not in


Pythonが提供する埋め込み演算子(in,not in)
オブジェクトin(not in)シーケンスの形式は使用可能(文字列、リスト、凡例、バイナリ)
if 'p' in 'python':
    print(True)

else:
    print(False)
--> このリンクを参照

標準入力


input()の速度はやや遅く,大量のデータを受信するとsysとなる.stdin.readline()の使用を推奨します.(原因はわかりませんが、そうだったのかな~と調べてみたら、誰かが説明してくれました>リファレンス)
sys.stdin.readline()はinput()と同様に1行の入力を受け入れますが、開行文字とスペースの末尾に含まれるため、rstrip()を行う必要があります.
import sys
data = sys.stdin.readline().rstrip()

range()

range()
range(시작,)
range(시작,, 증감) #증감이 -1이면 거꾸로 내려옴

コントラスト


まず、リストを反転させる最も簡単な方法は、ホイールを使用することです(l[:-1]).
close = [1,2,3,4,5]
reversed_close = close[::-1]
  • reverseはlistが提供する関数です.
    値を返さず、リストのみを反転
  • reversedは内蔵関数です.
    逆オブジェクトを返します.したがって,list()やtuple()などを用いると,変換が必要となる.
    文字列にするには、リストを変換しません.join()を使用して文字列を直接作成します.
  • --> このリンクを参照
    l = ['a', 'b', 'c']
    l.reverse()
    print(l)  # ['c', 'b', 'a']
    
    l = ['a', 'b', 'c']
    list(reversed(l))  # ['c', 'b', 'a']
    

    pythonにはswitch文がありません。ドアがない


    さんこうえんざん


    pythonでは、3つの演算は(?:)ではなく、次のようになります.
    c = a if (조건문) else b
    print(a if a>b else b)

    dictionaryのget()

    c  = input()
    d = {
    'A':'best!!!',
    'B':'good!!',
    'C':'run!',
    'D':'slowly~'
    }
    print(d.get(c,'what?'))  # dic.get(a,b) -> dic에서 a의 value를 반환하되
    			 # a에 해당하는 key가 없으면 b를 반환

    ビット演算or,xor


    ビット単位or演算-a|b
    ビットxor演算-a^b

    filter()


    filter(a,b)->リストbの場合、a(関数)に対応する項目の関数のみがフィルタされます.
    a lambdaをよく使います.
    filterもfilterオブジェクトを返すのでlist()を使用して変換する必要があります.
    # n까지 3,6,9게임하는 코드...
    n = int(input())
    
    for i in range(1,n+1):
        c = len(list(filter(lambda x: int(x) == 3 or int(x) == 6 or int(x) == 9, str(i))))
        if c > 0:
            print('X'*c, end = ' ')
        else:
            print(i, end = ' ')

    16進I/O利用

    # 16진수 구구단 출력하는 코드...
    n = int(input(), 16)  # 입력받은 문자를 16진수로 인식하여 정수 변환
    for i in range(1, 17):
        print('%X'%n, '*%X'%i, '=%X'%(n*i), sep='') 
    
    # B 입력 시 결과 ---
    # B*1=B
    # B*2=16
    # B*3=21
    # B*4=2C
    # B*5=37
    # B*6=42
    # B*7=4D
    # B*8=58
    # B*9=63
    # B*A=6E
    # B*B=79
    # B*C=84
    # B*D=8F
    # B*E=9A
    # B*F=A5
    # B*10=B0

    find()


    パラメータとして入力された文字を含む文字列のインデックスを検索して返し、ない場合は-1を返します.
    **文字列にのみ適用されます.
    a = 'hello'
    a.find('o'))  #4
    a.find('o', 1, 3)  #-1
    # 두번째 인자 - 시작위치
    # 세번째 인자 - 끝위치

    index()


    find()と似ていますが、文字列/リスト/凡例に使用できます.値がない場合、Value Errorが発生します.
    a = 'hello'
    a.index('o'))  #4
    a.index('o', 1, 3)  #ValueError
    # 두번째 인자 - 시작위치
    # 세번째 인자 - 끝위치

    for-else


    pythonはfor-elseの使い方をサポートします.
    for文の間に中断はなく,最後まで実行するとelse文の内容が実行される用法.