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

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

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

Ⅰ. 概要

Python の コレクション主なものとして リスト、タプル、辞書そこに存在します。リストは、データを順番にまとめたものです。どのようなデータ型でも対応可能です。タプルはリストとほぼ同じですが、読み取りのみが可能です。辞書は、キーと値で構成されるデータ形式の集まりです。リスト、タプル、辞書には、追加、削除、変更、長さの取得、検索などの機能を提供する便利な関数があります。これらの関数は、まるで魔法の箱のように、特定の動作を実行します。Pythonで 関数この関数は、パラメータを受け取り、値を返すことができます。関数内で使用されるローカル変数と、複数の関数で共有されるグローバル変数の概念があります。


内蔵型



Ⅱ. Pythonリスト

Pythonで リストこれを理解するために スタック (Stack)、キュー (Queue)、デキュー (Dequeue)これらの概念を理解することが重要です。実際、これらの概念を完全に理解しなくても、何度か使ってみるうちに自然と使えるようになります。スタック、キュー、ディキューの概念だけでも多くのことが理解できますので、ここでは簡潔に説明し、その後の詳細な解説を参照するように推奨します。


スタックは 後任者選出先入れ先出し (LIFO) データが構造化された形で入ってくる際、一番上に積み重ねられ、データを読み込んだり活用したりする際に、最後に到着したデータが最初に処理されます。キューは 先着順(先入れ先出し方式)これは、スタックと異なる構造で、最初にデータが入力されたものが、最初にデータが出力されるという特徴があります。非同期キューは、線形キューの欠点を補完し、データが入力される際と出力される際に、効率的な処理を実現します。 データの追加と削除は、順番に関係なく可能です。 最初に登録されたデータを除外するか、最後に登録されたデータを除外するかを選択できます。


Pythonでは、リストはデータ型に関わらず、複数のデータをまとめてグループを作成することができます。身近な例として、学校のクラスで、複数の生徒が集まっている場合、クラスは生徒をまとめる全体的な容器であり、生徒は個別のデータとなります。この場合、リストはクラスとして機能し、生徒はデータとして扱われます。リストは インデックスそれぞれの学生が固有の学籍番号を持っているように、リスト形式で作成されたデータも、それぞれのデータが何番目であるかを識別するための番号を持っています。


※ ここで重要なのは、インデックス番号が1から始まるのではなく、0から始まるということです。これは、コンピュータが0と1を基本とした機械語でプログラムを実行する点と関係しています。


リストを作成する際に

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

このような形式で生成できます。上記の例では、まだデータが入力されていない空のリストであり、下の例は4つの数字を含むリストです。この場合、下のリストを基準に、最初のデータのインデックスは0、値は1、2番目は1、2 ··· このように、インデックス番号とデータがそれぞれ対応付けられます。リストは様々な形式を持つことができます。

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

以前の投稿を参照すると、基本的には、整数、浮動小数点数、文字列、およびブール型の4種類のデータ型(データ型)すべてをリストとして作成できます。


※ Python の特徴の一つは、基本的なデータ型に加えて リストや、その後の学習するタプル、辞書も、リスト内の1つのデータとして扱います。ぜひご参加ください!


このように、データ型に関わらず、すべてをリスト形式にすることができます。リスト内のデータにアクセスする方法としては、インデックス番号を使って直接呼び出す方法や、ループ処理を利用する方法があります。

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

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

※ ここで、Pythonならではの特徴について リストへの加算と乗算これにより、2つのリストを足し合わせたり、1つのリストを特定の数値で繰り返し掛けたりすることで、同じデータが複数含まれるリストを作成することができます。

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では、インデックス番号を1つだけではなく、範囲を指定することができます。上記の例では、最初の数字が、どのデータから開始するかを指定しています。 初期値そして、その後の数字は どの時点までのデータですか 認識値を表します。`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()例えば、最後にデータを追加する場合 挿入()この場合、2つの要素を受け取ります。最初の要素は、データを配置する場所、2番目の要素はデータそのものです。


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()削除するこれは、リスト内のデータを削除する関数です。`del()`関数は、特定の要素のデータを削除したり、リスト全体を削除したりすることができます。一方、`remove()`関数は、リスト内の特定の要素のみを削除します。重複したデータが複数存在する場合、最初に現れる1つのデータのみを削除します。 pop() この関数は、リストの最後のデータを取得し、そのデータを削除します。


count() この関数は、シンプルなもので、引数として指定されたデータの中から、指定された条件に合致するデータの数を返します。 リストから特定の値を検索し、その要素の数を返す。この方法を使用してください。


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

順番に並べられていないリストを、特定の順序で並べたい場合 ソート() 関数を使用します。 基本的には昇順にソートされ、引数に`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]

逆順に並べる この関数は、リストの最後のデータから順に、データの位置を逆順に変化させます。 コピー() 関数は、リストを別のリストにコピーします。 上記の例のように、コピーされたリストを新しい変数に格納することも可能です。


※ リストをコピーする際に知っておくべき重要な概念は 浅いコピーわあ 完全なコピーこれらはすでに多くの優れた記事で紹介されていますが、簡単に説明すると、浅いコピーは既存のリストの住所値のみをコピーするため、新しいリストや既存のリストが変更されると、それらも一緒に変更されます。一方、深いコピーは、既存のリストの実際のデータを新しいメモリ領域にのみコピーするため、データが変更されることに影響を受けません。


リストの概念が理解できた場合 2次元リストこれは覚えておくと役立ちます。

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

このような構造で、このリストを活用するためには、ネストされたループを使用する必要があります。さまざまな用途に活用できますが、難しい概念なので、十分に練習することをお勧めします。この2次元リストの特定のデータを取得する場合は、インデックス番号が2つ必要で、「list[0][1] = 2」のように参照できます。2次元リストを理解するために 行列の数学これを知っておくことは、非常に役立ちます。また、2次元リストを効果的に活用できるようになります。 「テトリス」 同じゲームを開発することも可能です。最初は難易度が高い場合があるので、書籍や他のブログなどを参考に、十分に理解してから挑戦することをお勧めします。



Ⅲ. Python のタプル

タプルリストに書き込みができない 読み取り専用リストそう考えると、理解しやすいでしょう。その他の機能は、リストで使用する関数と同様です。 del() この関数は、個々のデータを削除することはできませんが、リスト全体を削除することができます。後で 定常この概念を理解しておくと役立つでしょう。 「最初に変数に割り当てられた値が、変更されずに保持されるのが定数」これは、タプルを定数リストと考えることができます。

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

tuple3 = (10,)
tuple4 = 10,

タプルは作成時に、格納するデータをあらかじめ指定する必要があります。このデータは変更されず、常に保持されます。リストとは異なり、固定されたデータのみを保持します。 「()」 丸括この機能を使用します。リストは 「[]」 大括弧この方法を使用します。単一のデータを持つタプルを作成するには、上記の例のように、データの後に 、(コンマ)には、この演算子を適用する必要があります。タプルはリストと同様に、インデックスを使ってアクセスでき、加算や乗算も可能です!


※ リストとタプルで使用できる関数の中には、互いに変換できる関数があります。リストをタプルに、またはタプルをリストに変換したい場合は、 タプルの一覧もし、リストをタプルに変換したい場合は リストのタプル化 このように使用するのが適切です。



Ⅳ. Python の辞書

辞書これは、「英英辞書」をイメージすると分かりやすいです。2つの単語がペアとなり、それぞれがキーと値として扱われます。

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」の反対の意味で使用する場合は注意が必要です。 ~ではありません例えば、「リスト、タプル、辞書、range()」内の特定のデータが存在するかどうかを確認する機能があります。`in`は、指定されたデータがリスト、タプル、辞書、または`range()`関数によって作成された集合に存在するかどうかを確認します。一方、`not in`は、指定されたデータが存在しないかどうかを確認します。



Ⅴ. Python関数

[SK Telecom SeSAC、ソウル1期] プログラミング言語とPython(変数、演算子、データ型)

関数は、以前の投稿で簡単に触れられていますが、特定の動作を実行した後、引数を受け取るものです。 返却これは、使用後に料金を返金する仕組みです。例えば、自動販売機に硬貨を入れると飲み物が出てくるという状況を考えると理解しやすいでしょう。

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

このような形式で関数を定義し、主に~ 戻り値が存在しない場合と、存在する場合があります。そこにあります。 値を返す場合 特定の変数に値を代入することで、他の関数に引数として渡したり、計算に使用したり、さまざまな方法で活用することができます。 返される値がない場合この関数内で処理が実行された後、終了します。また、この関数は、最初に触れる関数の一つとして特に重要です。 print() これらの関数は利用できます。print()、len()、count()などのPythonの基本的な組み込み関数も、実際にコードを書く際には役立ちます。 ユーザー定義関数これにより、ユーザーごとに異なる関数が作成され、非常に多様な関数動作構造が生じています。


関数 パラメータこの関数は、入力されたデータに基づいて動作するか、データを受け取らずに動作することができます。入力されたデータを処理した後、その結果を返します。

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

基本的には、このような構造で作成できます。上記の例は 「加える」この関数は、特定の処理を実行します。


※ 関数についても学習する必要がある場合 プログラムの作成そのようなプログラムを作成するための、効率的な構造についていくつかのアドバイスをお伝えします。 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() 関数は同じデータを入力として受け取る代わりに、足し算と引き算の両方が可能な関数になります。ただし、返り値が2つ以上の場合、受け取る変数の数もそれに合わせて調整する必要があります。


def myFunc() :
    pass

if True :
    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を出力することが可能になります。


※ 関数内で直接、グローバル変数を参照できるキーワード 「グローバル」しかし、グローバルに定義された変数を再割り当てすることも可能です。

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

def func2() :
    print(a)

a = 20

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

上記の例とは異なり、func1() 関数ではグローバル変数を直接参照しています。 再配分それだけのことです。もし「グローバル」と宣言していなければ、ローカル変数として機能していた可能性がありますが、「グローバル」と宣言したことで、グローバル変数として再利用されるようになりました。この点に注意が必要です。グローバル変数は、プログラムの機能によって他の関数を参照できるため、データが変更される可能性があります。 誤作動を引き起こす可能です。そのため、グローバルなキーワードを使用する際には注意が必要です。



おまけ

今日は、リスト、タプル、辞書、そして関数について学びました。徐々に本格的にPythonを学んでおり、作成できるコードも多様になり、様々なミッションをこなすことで、計算機や宝くじなどのプログラムも作成できるようになりました。しかし、以前から学んだ内容ですが、初めて学ぶ方にとっては非常に難しいと感じます。私も慣れるまでに時間がかかった記憶があり、この記事では扱っていない部分も多くあります。そのため、この記事を読まれている方には、内容が難しいので、しっかりと学習する必要がある、ということをご理解いただければ幸いです。😊