[tony9402] Python Code For Test
ソース:https://github.com/VSFe/Algorithm_Study/blob/main/Concept/New/00_Special/Pythonic_Code_For_Coding_Test.md
Pythonは他のC-Style言語(C、C++、JAVA、...)いろいろな特殊な文法があります.
ただ、コードをテストするためにPythonを使ったり、基本的な文法だけを勉強して使う人は、Python特有の文法(Pythonicのコード)をうまく利用できないことが多い.
この資料は以下の人に推薦します. Python構文は知っていますが、Pythonコードの作成に困っている人 C-Style言語Pythonを使用してエンコードテストを行うユーザー 1. Unpacking
しかし、このような状況もある.から入力したリストから最初の値と最後の値 を得たいだけです.入力のリストから最初の値と最後の値を除外したいのですが、 乗数、繰返し二乗 List型容器を繰り返し、 を拡張する可変因子 Unpacking restに使用されるのは可変パラメータです.すなわち,パラメータの個数がどれくらいであるかが不明な場合に用いる.first indexおよびlast indexが前および後に移動する場合、restは前に移動します.
Unpackingって何ですか?
事実リストだけでなく,容器型構造にも応用できる.tupleでもsetでもいいですUnpackingと言った以上、他のことを話しましょう.これはどうですか.
2. List Comprehension
Pythonの花の一つとして、韓国語もスマートリストと呼ばれています.
まず基本型を見て、
では、これはいかがですか.百駿オンラインローエンド1920号「捜狐」(http://boj.kr/1920)
DictionaryおよびSetは、Hash Table構造を有する.したがって,挿入,削除,ブラウズ演算の時間的複雑度はO(1)である.
初心者がよく犯す間違いはlistでinを使って値を探すことです.
setの構造上、同じ値は指定できません.
参考として,この方法を用いた類似辞書がある.これをdefaultdictと呼びます.
Pythonは他のC-Style言語(C、C++、JAVA、...)いろいろな特殊な文法があります.
ただ、コードをテストするためにPythonを使ったり、基本的な文法だけを勉強して使う人は、Python特有の文法(Pythonicのコード)をうまく利用できないことが多い.
この資料は以下の人に推薦します.
a, b = map(int, input().split())
これはiterableです(すべての重複可能なオブジェクトをiterableと呼びます.リスト、チュートリアル、文字列など...)1つのデータはすべて可能な文法です.しかし、このような状況もある.
_list = [1, 2, 3, 4, 5]
first_index, *rest, last_index = _list
print(rest) # 2 3 4
Pythonは*(アスタリスク)を以下の場合に使用します.Unpackingって何ですか?
_list = [1, 2, 3, 4, 5]
for num in _list:
print(num, end = ' ') # 1 2 3 4 5
Listの要素が出力する通常のコード.では、これはいかがですか._list = [1, 2, 3, 4, 5]
print(*_list) # 1 2 3 4 5
これをListUnpackingと呼びます.事実リストだけでなく,容器型構造にも応用できる.tupleでもsetでもいいですUnpackingと言った以上、他のことを話しましょう.これはどうですか.
a, b, c = [1, 2, 3]
d = a, b, c
print(d) # (1, 2, 3)
このように1つの変数に複数の値を割り当てると、tupleにバインドされます.上ではtufloUnpackingができると言っていますが、これをPackingと考えればいいです.2. List Comprehension
Pythonの花の一つとして、韓国語もスマートリストと呼ばれています.
まず基本型を見て、
_list = [i for i in range(10)] # 0 1 2 3 4 5 6 7 8 9
このような構造ですでは、これはいかがですか.百駿オンラインローエンド1920号「捜狐」(http://boj.kr/1920)
import sys
input = sys.stdin.readline
_ = input()
_set = set(map(int, input().split()))
q = input()
_list = list(map(int, input().split()))
print(*[1 if dt in _set else 0 for dt in _list], sep='\n')
square = [[x ** 2 for x in range(3)] for _ in range(3)]
print(square) # [[1, 4, 9], [1, 4, 9], [1, 4, 9]]
コード長を短くする利点がありますが、長すぎると可読性が損なわれます.matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
print([[x for x in row if x % 3 == 0] for row in matrix if sum(row) >= 10]) # [[6], [9]]
その他の例_list = [i for i in range(10)] # 1 ~ 10을 담는 리스트
_list = [2 * i for i in range(10)] # 2, 4, 6, ..., 20을 담는 리스트
tmp = [random.randrange(1,, 200) for i in range(100)]
_list = [i for i in tmp if i % 3 == 0] # 주어진 리스트를 받아 3의 배수만 담는 리스트
list_of_tuple = [(i, j) for i in range(100), for j in range(100, 0, -1)]
_list = [(j, i) for i, j in list_of_tuple] # 값이 두개 들어있는 튜플을 받아 리스트를 생성하되, 튜플 내부의 값을 뒤집어서 저장
_list = [i if i <= 15 else 15 for i in tmp] # 주어진 리스트를 그대로 담되, 15가 넘어가는 값은 15로 바꿔서 저장
x = [i for i in range(5)]
y = [i for i in range(5)]
_list = [(i, j) for i in x, for j in y]
3.ディクショナリが上手DictionaryおよびSetは、Hash Table構造を有する.したがって,挿入,削除,ブラウズ演算の時間的複雑度はO(1)である.
初心者がよく犯す間違いはlistでinを使って値を探すことです.
data = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
for i in range(100):
if i in data:
print(1)
この場合setを使うべきです.data = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
_data_set = set(data)
for i in range(100):
if i in _data_set:
print(1)
数百万個のデータのセットで約10万回のin演算を実行し、1秒もかからないうちに完了し、listを使用すると数時間以上かかる可能性があります.setの構造上、同じ値は指定できません.
i_want_to_erase_duplicate_element = [21, 31, 65, 21, 58, 94, 13, 31, 58]
completed_list = list(set(i_want_to_erase_duplicate_element)) # 21, 31, 65, 58, 94, 13
test_list = ['Test', 'test', 'TEST', 'tteesstt']
converted_list = list(set(map(lambda string: string.lower(), test_list))) # test, tteesstt
辞書はキーとペアで構成されています.fruit = ['apple', 'grape', 'orange', 'banana']
price = [3200, 15200, 9800, 5000]
_dict = {}
for i in range(len(price)):
_dict.append((fruit[i], price[i])) # {'apple' : 3200, 'grape' : 15200, 'orange' : 9000, 'banana' : 5000}
そうやって作ったのですか?ここではzipです.zipは、各iterableの要素を収集するためのウィジェットを作成します.つまり、リストを作ってください.zipは辞書を作成するときにも役立ちます.fruit = ['apple', 'grape', 'orange', 'banana']
price = [3200, 15200, 9800, 5000]
_dict = dict(zip(fruit, price)) # {'apple' : 3200, 'grape' : 15200, 'orange' : 9000, 'banana' : 5000}
一般的に、ディクシャナではない値を探したいと思っていると間違います.fruit = ['apple', 'grape', 'orange', 'banana']
price = [3200, 15200, 9800, 5000]
_dict = dict(zip(fruit, price))
print(_dict['strawberry']) # Error!
これを回避するためにinオプションを使うのは初心者です.fruit = ['apple', 'grape', 'orange', 'banana']
price = [3200, 15200, 9800, 5000]
_dict = dict(zip(fruit, price))
print(_dict.setdefault('strawberry', 0)) # 0
setdefaultはdickshernerに値がある場合にその値を返し、値がない場合に2番目のパラメータに渡される値を追加し、追加した値を返します.参考として,この方法を用いた類似辞書がある.これをdefaultdictと呼びます.
from collections import defaultdict
movie_review = [('Train to Busan', 4), ('Clementine', 5), ('Parasite', 4.5), ('Train to Busan', 4.2), ('Train to Busan', 4.5), ('Clementine', 5)]
index = defaultdict(list)
for review in movie_review:
index[review[0]].append(review[1]) # {'Train to Busan': [4, 4.2, 4.5], 'Clementine': [5, 5], 'Parasite': [4.5]}
Reference
この問題について([tony9402] Python Code For Test), 我々は、より多くの情報をここで見つけました https://velog.io/@qjsmdk1346/Python-Code-For-Testテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol