WeSeong ログイン
← 記事一覧に戻る
プログラミング言語

Python リスト, タプル, 辞書、関数

Python リスト, タプル, 辞書、関数

Ⅰ. 概要

Pythonの Collectionsたとえば、次のようなものを含みます リスト(List), タプル(Tuple), 辞書 (Dictionary)あります。 リスト順序に整理されたデータの集合です。あらゆるデータ型が可能です。 タプルは リストほぼ同じですが、読むことしかできません。辞書 Keyと Valueそれは、分割された形式でデータが格納されたコレクションです。 リスト, タプル, 辞書には、追加、削除、変更、取得、検索などの操作をサポートする便利な機能が備わっています。これらの機能は、魔法の箱のような特定のアクションを実行します。 Pythonで 機能関数にはパラメータがあり、値を返すことができます。関数にはローカル変数とグローバル変数という概念があります。ローカル変数は関数内のみに影響を与えますが、グローバル変数は複数の関数で共有できます。


内蔵



Ⅱ. Python のリスト

Pythonで リスト(List)理解するために スタック (Stack), キュー (Queue), デク(deck) Dequeue)これらの概念を完全に理解する必要はありませんが、何回か使ってみるとすぐに使いこなせるようになります。スタック、キュー、デークなどの基本的な知識で多くの概念をカバーできるため、ここでは省略します。詳しい説明は他のブログや投稿でも見つけることができますので、一度は確認しておくことをおすすめします。


スタックは 後方からの出口 (Last In First Out—LIFO) データが構造に入ると、上に積み重ねられ、データを取得または利用すると、最後に入力されたデータが最初に処理されます。キュー 先着順です(先に来た人が先に受けられます)First In First Out; FIFO)これは、入力された最初のデータが出力される最初のデータであるという点でスタックとは異なります。D-CUY は、データが正しい順序で入力され、出力されるようにすることで、線形キューの欠点を補います。 データを任意の順序で挿入および削除できます。 最初に入力されたデータを削除するか、最後に入力されたデータを削除するかを選択できます。


Pythonでは、リストはデータの種類に関係なく複数のデータをグループ化してコレクションを作成できます。単純な実世界の例として、学校の教室に複数の生徒が集まっている場合、教室は生徒の全体的なコンテナであり、生徒は個別のコンテナです。この場合、リストは教室であり、生徒はデータになります。リストには、各生徒に学生ID番号があるように、indexという概念があります。リストで作成されたデータには、それがどのデータであるかを示す番号が付けられます。


インデックス番号は1ではなく0から始まることに注意してください。これは、コンピュータが0と1に基づいたマシン言語でプログラムを実行するという事実と関係しています。


リストを作成する場合

list = []
list = [1, 2, 3, 4]

この形式で生成できます。上の例では、まだデータがない空のフィールドがあります。 リストそして、ここに四つの数字があります。 リストこの時点では、次のことが行われます。 リストこれに基づいて、最初のデータインデックスは0、値は1、次は1、2となります。 ··· このようにして、各インデックス番号は対応するデータとマッチングされます。 リストさまざまな形態を取ることができます。

プログラミング言語とPython(変数、演算子、データ型)

前の投稿を参照すると、整数、浮動小数点、文字列、ブール型のすべてのデータ型をリストとして作成できます。


※ Pythonその特徴の一つは、基本データ型に加えて、 リストその後で学んでいきます。 タプル, 辞書もそうです リスト一つのデータについてあなたも参加できます!


これにより、すべてのデータ型をリストに変換できます。リスト内のデータにアクセスするには、インデックス番号を直接使用するか、ループを使用します。

list = [1, 2, 3, 4]
print(list[0])
결과 출력 ==> 1

for i in list :
    print(i, "", end="")
결과 출력 ==> 1 2 3 4

※ ここでもまた Pythonユニークな機能として リスト加算と乗算二つのことができます。 リストさらに追加するか、一つだけ追加します リスト特定の数値で乗算して、繰り返されるデータの複数のインスタンスを作成します リストそれらを作成することができます。

list1 = [1, 2, 3]
list2 = [4, 5, 6]
print(list1 + list2)
결과 출력 ==> [1, 2, 3, 4, 5, 6]

print(list1 * 2)
결과 출력 ==> [1, 2, 3, 1, 2, 3]


リストデータ 変更その際、インデックス番号を使用することも可能です。

list = ['a', 'b', 'c']
list[1] = 'd'
print(list)
결과 출력 ==> ['a', 'd', 'c']

list[2:3] = ['e', 'f']
print(list)
결과 출력 ==> ['a', 'd', 'e', 'f']

Python興味深いことに、インデックス番号は単一の数値ではなく、範囲として指定できます。上の例では、インデックスの前の数値で、どのデータ項目を始めるかを指定しています。 初期値そして、その背後にある数字 n 番目のデータまで for 文内の式を表します range() これは関数と同様に機能します。初期値を指定しない場合、最初のデータポイントが指定されます。逆順にデータを指定する場合は、-1、-2 などを使用します。 ··· 使うことができます。


リストデータの追加、削除、カウント、ソート、逆順に並べ替え、コピーを行う機能があります。

list = [1, 2, 3]
list.append(10)
print(list)
결과 출력 ==> [1, 2, 3, 10]

list.insert(1, 20)
print(list)
결과 출력 ==> [1, 20, 2, 3, 10]

これらの二つの関数は、リストにデータを追加するために使用されます。append()の場合、データは末尾に追加されます。insert()の場合は、二つの引数が必要です。最初の引数はデータを挿入する位置であり、第二の引数はデータ自体です。


list = [1, 2, 3, 4, 5]
del(list[0])
print(list)
결과 출력 ==> [2, 3, 4, 5]

del(list) ==> 리스트를 통째로 없앰

list = [1, 2, 3]
list.remove(2)
print(list)
결과 출력 ==> [1, 3]

list = [1, 2, 3]
list.pop()
3
print(list)
결과 출력 ==> [1, 2]

del() と remove() は、リスト からデータを削除する関数です。del() 関数の場合、特定のデータまたは全ての リスト を削除できます。remove() は、リスト 内の特定のデータだけを削除し、重複するデータのうち最初のものだけを削除します。pop() は、リスト 内の最後のデータを削除し、それを返します。


count()関数は簡単です。探したいデータを引数として渡すと、そのデータのインスタンスの数を返します。リスト.count(探したい値)を使用できます。


list = [1, 4, 2, 5, 3]
list.sort()
print(list)
결과 출력 ==> [1, 2, 3, 4, 5]

順番で並べられていません リスト並べ替えたいとき sort() 関数を使用します。デフォルトでは昇順に並べられ、引数が必要です。 sort(reverse=True)挿入すると、降順に並べ替えられます。


実際に勉強すると、ソートアルゴリズムを実装する課題が出されます。とても難しいですが、役に立つものです。ソートする時間はそれぞれ異なるさまざまなソート方法があります。条件文やループを使ったアルゴリズムを作るのも楽しいものです。ぜひおすすめします。


list = [20, 10, 40, 50, 30]
list.reverse()
print(list)
결과 출력 ==> [30, 50, 40, 10, 20]

list = [1, 2, 3]
copyList = list.copy()
print(copyList)
결과 출력 ==> [1, 2, 3]

reverse() 関数は、リスト の最後のデータから逆順にデータの位置を逆転します。copy() 関数は、リスト を新しい リスト にコピーします。上記の例のように、新しくコピーされた リスト は新しい変数に格納できます。


※ リストコピーするときに覚えておくべき重要な概念は 浅いコピーShallow Copy)と 深いコピーDeep Copy)あります。この概念を紹介する優れた記事はすでに多くありますので、簡単に説明しておきましょう。浅いコピーは既存のものと似ています。 リストアドレス値だけをコピーするため、新たにコピーされます リスト慣れています。 リスト一つが変更されると、もう一つも変更されます。深いコピーでは、既存のメモリ領域を新たに作成します。 リスト実際のデータだけがコピーされるため、データの変更には影響しません。


リストの概念を理解している場合、2次元リストについて知ることが役立ちます。

list = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

こんな構造です。 リストこれを活用するには、階層化されたループを使用する必要があります。多くの方法で使用できますが、難しい概念であるため、十分に練習することをおすすめします。 2次元 リスト特定のデータを呼び出す場合、インデックス番号は 2 です。 'list[0][1] =2' このように呼ぶこともできます。 2次元 リスト理解するために 数学的行列知っておくのは良いことです。そして 2次元 リストそれをうまく活用できれば、 'テトリス また、自分でゲームを作ることもできます。最初は難しいかもしれませんので、試してみる前に、本や他のブログをよく研究しておくことをおすすめします。



Ⅲ. Python タプル

タプル(Tuple)は リスト書き込みできません 読み取り専用 リストそう考えるのは簡単です。その他の特徴も同じです。 リスト使用されている機能には del() 複数のデータではなく、一つのデータだけを削除できます。 リスト完全に削除したときだけです。後で 定数その概念を学ぶのは良いことです。 '最初は、変数に割り当てられた値は変わらず、常数になります。つまり、 タプルこれを定数のリストとして考えるのが良いです。

tuple1 = (1, 2, 3)
tuple2 = 1, 2, 3

tuple3 = (10,)
tuple4 = 10,

タプル生成時にデータを指定する必要があります。このデータは変更されず、生成プロセス全体で維持されます。 リストしかし、違っています '()' 括弧. を使用します。 リストは '[]' ブレース使用できます。データは一つしかありません タプル上の例のように、データを背景に配置して作成します。 ',(コンマ)'それを取り付ける必要があります。 タプルは リスト配列と同様に、インデックス番号でアクセスでき、加算や乗算が可能です!


※ さらに リストと タプル互いに変換するために使用できる機能があります。 リストを タプルで タプルを リストそれはフォームを変換します リスト変換したいとき list(タプル), タプル変換したいとき tuple(リスト) このように使うことができます。



IV. Python の辞書

辞書 (Dictionary)英語の辞書を考えてみると、二つのペアが一つのデータ項目となり、その一つがキーになります。Key), もう一つは価値ですValue)これがなります。

dict = {'a':1, 'b':2, 'c':3}
dict = {1:'a', 2:'b', 3:'c'}

上記の例のように辞書を作成する場合 '{}' ブレースキーには任意のデータ型を使用できます。 ただし、キーを複製することはできません。 そして リストしかし、違っています 注文誰もいない。

dict = {1:'a', 2:'b'}
print(dict[1])
출력 결과 ==> a

リストデータにアクセスするためにインデックス番号が使用されましたが、辞書 キロバイト単位のデータへのアクセス上の例のようにキーを中括弧に入れると、対応する値が返されます。辞書にデータを追加する場合 'dict[키] = 값'キーと値のペアの形で値を割り当てることができますが、重複したキーを挿入すると、以前に存在していた値が削除され、新しく割り当てられた値に置き換わります。値を追加する際は、必ずキーと値のペアとして割り当てる必要があります。 リストまた del() 関数を使用して削除することができます。


dict = {'가수':'트와이스', '인기곡':'Cheer Up!', '데뷰':'서바이벌 식스틴'}
print(dict.keys())
결과 출력 ==> ['가수', '인기곡', '데뷰']
print(dict.values())
결과 출력 ==> ['트와이스', 'Cheer Up!', '서바이벌 식스틴']
print(dict.items())
결과 출력 ==> [('가수', '트와이스'), ('인기곡', 'Cheer Up!'), ('데뷰', '서바이벌 식스틴')]

辞書の便利な機能 keys(), values(), items()あります。 keys() この関数は辞書にキーのみを追加します リストそれをインポートします。 values() 関数は値のみを返します リストそれをインポートします items() 関数にはキーと値があります タプル 形式として リスト(2次元 リスト形は同じです!)それをインポートします。


※ これまで見てきた構文の中に in があります。これは辞書だけでなく、条件文やループでも使用できます。in の反対は not in です。これは簡単です: 'data in リスト, タプル, 辞書, range()' これは、データが存在するか、リスト、タプル、辞書、または range() 関数によって作成されたセットに属しているかどうかをチェックします。not in は、in の反対に、データが存在しないかどうかをチェックします。



V. Python の関数

[SK Shillers SeSAC ソンギョンドン第1期] プログラミング言語とPython(変数、演算子、データ型)

前回の投稿では、関数について簡単に触れました。関数はパラメータを受け取り、特定のアクションを実行します。 returnこれは値を返す構造です。簡単な実世界の例として、コインを入れると飲み物が出る自動販売機を考えてみましょう。

def func1() :
    동작 구조
def func2() :
    동작 구조
    return 값

このような形式で関数を定義し、大まかに 返り値がない場合と、返り値がある場合あります。 返却値がある場合 特定の変数に対応する値を挿入し、それらを他の関数のパラメータとして渡したり、計算を実行したり、さまざまな方法で使用することができます。 返す値がなければ関数は操作が実行された後に終了し、最も一般的に出現する関数です。 print() 機能があります。 print(), len(), count() など Python組み込み関数も便利ですが、実際にコードを記述する際には、 カスタム関数これにより、各ユーザーに対して異なる機能が作成され、さまざまな機能挙動構造が生じます。


関数は、引数(Parameter)を受け取り、それらのデータを処理し、返します。

def add(x, y) :
    result = 0
    result = x + y
    return result

デフォルトでは、次のように構成できます。上記の例は、'add'を実行する関数です。


※関数を勉強したら、プログラムの作成に取りかかることができます。コードが非常に長くなるため、プログラムの構造についてのヒントをお伝えします。'1. 関数定義のセクションが最初に来ます。2. グローバル変数宣言のセクションが次に来ます。3. メインプログラムのロジックコードのセクションが次に来ます。'グローバル変数は後で説明しますが、その仕組みや種類について説明することでコードを理解するのに役立ちます。この構造を必ず守る必要はありませんが、後で数百、数千行のコードを書く場合、それを管理するのは非常に困難になるので、事前にコメントを残し、この構造に従うことをお勧めします。


最後に、学習のためのミッションを残します。以下の例は、ミッションを解決し、例外と構造について考えることで書きました。先ほども述べたように、関数の動作の構造は非常に多様ですので、以下の例は正解ではありません。もっと良いコードを書いてほしいです!


ミッション: 関数を使用した計算機の実装


















# 더하기
def add(x,y) :
	return x + y

# 빼기
def sub(x,y) :
	return x - y

# 곱하기
def multi(x,y) :
	return x * y

# 나누기
def div(x,y) :
	return x / y

# 입력
def inputNumber() :
	num = 0
	while True :
		num = input("숫자 입력 : ")
		
		if not(num.isdigit()) :
			print("숫자를 입력해주세요.")
			continue
		else :
			break

	return int(num)

# 계산입력
def inputSign() :
	sign = ''

	while True :
		sign = input("계산 입력 ( +, -, *, / ) : ")
		
		if sign not in ('+', '-', '*', '/') :
			print("제대로 된 계산을 입력해주세요.")
		else :
			break

	return sign

def control() :
	sign = inputSign()

	x = inputNumber()
	y = inputNumber()

	mark = {"+":add(x,y), "-":sub(x,y), "*":multi(x,y), "/":div(x,y)}

	result = mark[sign]

	print(f"## 계산기 : {x} {sign} {y} = {result}")

def main() :
	while True :
		print("계산기 작동")
		exit = int(input("진행1, 종료2 : "))
		
		if exit == 2 :
			break

		control()

main()


Pythonには、関数パラメータに関する独特な機能があります。どの言語でもパラメータの数は問題ではありませんが、Pythonではパラメータにデフォルト値を指定できます。

def add(x, y, z = 0) :
    result = 0
    result = x + y + z
    return result

print(add(4, 5))
결과 출력 ==> 9

元の関数が3つのパラメータを持っている場合、すべての3つのデータを挿入する必要がありますが、上記の例のように、1つの変数にデフォルト値が設定されている場合、2つのデータだけを割り当てても、関数は正常に動作します。関数を呼び出す際、「この関数を実行する」と指定する必要があります。関数のパラメータ数に応じてデータを正確に挿入する必要があり、パラメータ数に応じてロジック(演算構造)が変わる場合は、別の関数を作成する必要があります。


※ パラメータのデータ型は何でもかまいません!


def func1(x, y) :
    result = x + y
    return result

def func2(x, y) :
    result1 = x + y
    result2 = x - y
    return result1, result2

sum, sub = func2()

上の例で示されているように、Python関数の一つの特徴は、特定のアクションを実行し、複数のデータを返すことです。。func1()関数は基本的な「加算」関数ですが、func2()関数は同じデータを受け取りますが、「加算」と「減算」の両方を実行できます。もちろん、返り値が複数の場合は、受け取る変数を適切に調整する必要があります。


def myFunc() :
    pass

if True :
    pass

また、関数や条件文、および後で実装するクラスで使用できるキーワードもあります。'pass'は、プログラム計画に従って実装するクラスや関数を宣言し、後で定義することを意味します。コメントとして残すと便利ですが、タスクや関数の実装の役割に従って割り当てる際にも、全体のロジックを維持したまま有効です。


※関数もメモリ領域が割り当てられます。戻されたときには、関数が終了し、メモリ領域も同時に削除されます。単純なプログラムでは心配する必要はありませんが、大規模なプログラムでは、良いコードのために関数の役割と動作を考慮することが重要です。特に、ループや再帰関数を通じてメモリ漏れが発生したり、プログラムが終了したりする場合があります。


関数で学ぶ最後の概念は、グローバル変数とローカル変数です。

def func1() :
    a = 10
    print(a)

def func2() :
    print(a)

a = 20

func1()
func2()

上のコードを見ると、変数 a を同じように出力しています。しかし、 func1() 関数内では、a が定義されていますが、 func2() この関数は定義されていません。 この場合、両方の関数が呼び出され実行されたとき、変数 a はどのように表示されるでしょうか。

func1()
출력 결과 ==> a = 10
func2()
출력 결과 ==> a = 20

その結果は次のとおりです。 func1() 関数は、自身の実行構造内で宣言され定義された変数 a を呼び出しますが、 func2() この関数は、グローバル変数として宣言された変数 a を参照します。 関数内で宣言され、定義された変数はローカル変数です。そしていくつかの機能 グローバル変数は、共通に共有できるものです。つまり、 では、なぜ func1() この関数はグローバル変数 a を参照していないのですか。


答えは、ローカル変数がグローバル変数より優先されるためです。まず評価されるからです. 先ほど述べたように、関数もメモリ領域を割り当てます。割り当てられたメモリ領域内に、関数には変数aが含まれています。したがって、ローカル変数を直接呼び出すことができますが、func2()関数の場合、割り当てられたメモリ領域には変数aがありません。しかし、コードでは変数aへの呼び出しが必要なので、参照可能なスコープ内の変数aを探します。その結果、グローバル変数aを出力することができました。


には、関数内でグローバル変数を参照することができるキーワード 'global' があります。また、globalとしてインポートされたグローバル変数を再割り当てすることもできます。

def func1() :
    global a
    a = 10
    print(a)

def func2() :
    print(a)

a = 20

func1()
출력 결과 ==> a = 10
func2()
출력 결과 ==> a = 10

上記の例との違いは、 func1() 関数内 globalグローバル変数を取得する 再配置私がしたのはそれだけです。それが大事なことです。 global宣言されていなかった場合、ローカル変数として動作していたが、グローバル変数として使用することが宣言されているため、グローバル変数として再割り当てされた。これは重要な点であり、グローバル変数の場合、プログラムの機能に応じて他の関数から参照されることがあり、データが変更される可能性がある。 機能不全の原因それはできる。だからこそ global キーワードを使用する際には注意が必要です。



レビュー

今日は、リスト、タプル、辞書、関数について勉強しました。徐々にPythonについての知識が深まり、さまざまなプログラム(計算機、宝くじなど)や設定可能なコードを作成することができました。しかし、これまでに学んだことがあるとはいえ、初めて触れる人にとっては非常に難しい概念だと思います。慣れるのに長い時間がかかったことを覚えていますし、この記事では取り上げられなかったこともたくさんあります。なので、この記事を読んでいる方は、絶対に難しいということ、そして多くの勉強が必要だということ、そしてやってみることが不可能ではないということをお伝えしたいと思います!🫠まだまだうまく使えないと感じていますので、この記事を軽い入門としてご検討いただければ幸いです😁