Tianchi Alibaba Cloud Python の基礎: タスク 2

この章には次の内容が含まれています。

1. リスト
・ リスト定義
・ リストの作成
・ リストへの要素の追加
・ リスト内の要素の削除
・ リスト内の要素の取得
・ リストの共通演算子
・ リストのその他のメソッド
2. タプル
・ 要素グループの作成とアクセス
・タプルの更新と削除·タプル関連の
演算子
· 組み込みメソッド·タプル
の圧縮解除4.辞書· 可変型と不変型· 辞書の定義·辞書の作成とアクセス·メソッド組み込み辞書6 Sequencesの組み込み関数シーケンス

















day04:

リスト:
単純なデータ型

整数 <class 'int'>
Float <class 'float'>
ブール値 <class 'bool'>

コンテナのデータ型

・リスト<クラス 'リスト'>
・タプル<クラス 'タプル'>
・辞書<クラス 'dict'>
・セット<クラス 'セット'>
・文字列<クラス 'str'>

1. リストの定義 リスト
は、固定サイズのない順序付けられたコレクションであり、任意のタイプの任意の数の Python オブジェクトを格納できます。構文は [要素 1, 要素 2, …, 要素 n] です。

重要なポイントは「括弧 []」と「カンマ」で、括弧はすべての要素を結合し、カンマは
各要素を 1 つずつ区切ります。

2. リストの作成
通常のリストを作成します
例:

x = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']
print(x, type(x)

x = [2, 3, 4, 5, 6, 7]
print(x, type(x))

x = [1.0,1.2,1.3]
print(x,type(x[0]))
['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday'] <class 'list'>
[2, 3, 4, 5, 6, 7] <class 'list'>
[1.0,1.2,1.3] <class 'float'>

range() 関数を使用してリストを作成します
。 例:

x = list(range(10))
print(x,type(x))

for i in range(1,10,2):
    print(i,' ',end='')  #end表示不换行

x = list(range(10, 1, -2))
print(x, type(x))
# [10, 8, 6, 4, 2] <class 'list'>
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] <class 'list'>
1  3  5  7  9  
[10, 8, 6, 4, 2] <class 'list'>

内包表記を使用してリストを作成する

x = [0]*5
print(x,type(x))

x = [0 for i in range(5)]  #在(0,5)中循环5次得到5个0组成的列表
print(x,type(x))

x = [i for i in range(10)]
print(x,type(x))

x = [i for i in range(10,2)]  #使用range()函数时,若加步长,则必须输入起始值,否则不会输出结果
print(x,type(x))

x = [i for i in range(1,10,2)]
print(x,type(x))

x = [i**2 for i in range(1,10,2)] #从range()函数中所得数据的平方
print(x,type(x))

x = [i for i in range(100) if i%2 !=0 and i%3 ==0] #if里的条件可以加小括号
print(x,type(x))
[0, 0, 0, 0, 0] <class 'list'>
[0, 0, 0, 0, 0] <class 'list'>
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] <class 'list'>
[] <class 'list'>
[1, 3, 5, 7, 9] <class 'list'>
[1, 9, 25, 49, 81] <class 'list'>
[3, 9, 15, 21, 27, 33, 39, 45, 51, 57, 63, 69, 75, 81, 87, 93, 99] <class 'list'>

知らせ:

リストの要素は任意のオブジェクトであるため、リストに保存されるのはオブジェクトへのポインタです。単純な [1,2,3] を保存する場合でも、3 つのポインターと 3 つの整数オブジェクトがあります。
x = [a] * 4 演算では、リストへの参照が 4 つだけ作成されるため、a が変更されると、それに応じて x 内の 4 つの a も変更されます。

x = [[0]*3]*4
print(x,type(x))

x[0][0]=1
print(x[0])
print(x,type(x))  #此出看注意还是不太明白

a = [0] * 3
x = [a] * 4
print(x,type(x))
[[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]] <class 'list'>
[1, 0, 0]
[[1, 0, 0], [1, 0, 0], [1, 0, 0], [1, 0, 0]] <class 'list'>
[[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]] <class 'list'>

混合リストを作成する

mix = ['ltt','ll',[5,2,1]]
print(mix,type(mix),type(mix[0]))
['ltt', 'll', [5, 2, 1]] <class 'list'> <class 'str'>

3. リストに要素を追加する

x = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']
x.append(666)
print('列表的长度:',len(x),x, type(x))
['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 666] <class 'list'>

: extend() 関数は、リストの最後に別のシーケンスで複数の値を一度に追加します (元のリストを新しいリストで拡張します)
例:

x = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']
x.extend([666,'ll'])
print('列表的长度:',len(x),x, type(x))
列表的长度: 7 ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 666, 'll'] <class 'list'>

厳密に言うと、append はリストの後に物全体を追加する追加であり、extend はリストの後に物内のすべての要素を追加する拡張です。

list.insert(index, obj) 在编号 index 位置插入 obj。
x = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']
x.insert(0,'日期')
print('列表的长度:',len(x),x, type(x))
列表的长度: 6 ['日期', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday'] <class 'list'>

4. リスト内の要素を削除します。
list.remove(obj) リスト内で最初に出現した値を削除します。

list.pop([index=-1]) はリスト内の要素 (デフォルトでは最後の要素) を削除し、要素の値を返します。

Remove と Pop はどちらも要素を削除できます。前者は削除する特定の要素を指定し、後者はインデックスを指定します。

del var1[, var2 ...] 単一または複数のオブジェクトを削除します。
例:

x = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']
del x[0:2]
print(x)
['Wednesday', 'Thursday', 'Friday']

注:リストから要素を削除し、それを今後使用しない場合は、del ステートメントを使用します。要素を削除した後も引き続き使用したい場合は、メソッド Pop() を使用します。

5. リスト内の要素を取得する 要素
のインデックス値を使用して、リストから 1 つの要素を取得します (リストのインデックス値は 0 から始まることに注意してください)。
インデックス -1 を指定すると、Python は最後のリスト要素を返し、インデックス -2 を指定すると最後から 2 番目のリスト要素を返します。

スライスを記述する一般的な方法は、start : stop : step です。

ケース 1 - 「start :」
は、番号 start からリストの最後に向かって 1 ステップでスライスします (デフォルト)。
例:

x = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']
print(x[3:]) #从索引为3的开始
print(x[-3:]) #从索引为-3开始
['Thursday', 'Friday']
['Wednesday', 'Thursday', 'Friday']

ケース 2 - 「:stop」は、
リストの先頭から番号付きストップまで 1 ステップ (デフォルト) でスライスします。

week = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']
print(week[:3])  #stop为3,但是不取stop对应的索引值
print(week[:-3])  
['Monday', 'Tuesday', 'Wednesday']
['Monday', 'Tuesday']

ケース 5 - 「 : 」
はリスト内のすべての要素をコピーします (浅いコピー)。

eek = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']
print(week[:])
['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']

6. リストでよく使用される
演算子 等号演算子: ==
接続演算子 +
繰り返し演算子 ※ 「等号 ==」
ではなく、内のメンバーシップ演算子は
、メンバーとメンバーの位置が同じ場合にのみ True を返します。

リストの結合には「プラス記号 +」と「乗算記号 *」の 2 つの方法があり、前者は先頭から末尾までを結合し、後者はコピー結合します。

タプル

[タプル] 定義構文は次のとおりです: (要素 1, 要素 2, ..., 要素 n)、かっこですべての要素を結合し、コンマで各要素を 1 つずつ区切ります。

タプルとリストの違い:
Python のタプルはリストに似ていますが、文字列と同様に、タプルは作成後に変更できない点が異なります。
タプルには括弧を使用し、リストには角括弧を使用します。
· タプルはリストに似ており、インデックス付けとスライスにも整数が使用されます。

t1 = (1,2,3,4,5,6,7,8)
print(t1,type(t1))

t2 = t1[::2]  #切片[start:stop:step]
print(t2,type(t2))
(1, 2, 3, 4, 5, 6, 7, 8) <class 'tuple'>
(1, 3, 5, 7) <class 'tuple'>

**注意:** タプルに要素が 1 つだけ含まれている場合は、要素の後にコンマを追加する必要があります。追加しないと括弧が演算子として使用されます。
例:

print(8 * (8))  
print(8 * (8,))  
64
(8, 8, 8, 8, 8, 8, 8, 8)

例: 2次元タプルを作成する

x = (1, 10.31, 'python'), ('data', 11)
print(x)

print(x[0])

print(x[1])

print(x[0][0], x[0][1], x[0][2])

print(x[0][0:2])   #[start:stop:step]
((1, 10.31, 'python'), ('data', 11))
(1, 10.31, 'python')
('data', 11)
1 10.31 python
(1, 10.31)

タプル関連の
演算子 等号演算子: ==
連結演算子 +
繰り返し演算子 *メンバーとメンバーの位置
が同じ
場合のみ、「等号 ==」ではなくメンバーシップ演算子が True を返します。

・タプルの結合には[プラス記号+]と[乗算記号*]を使用した2つの方法があり、前者は先頭から最後までの結合、後者はコピー結合です。

組み込みメソッド タプル
のサイズも内容も変更できないため、メソッドは count と Index の 2 つだけです。

t1 = (123,456,789,123)

print(t1.count(123)) #count()是计算某个元素在元组中出现的次数;
print(t1.index(123,1,4)) #index()是查询某个元素在元组中的索引。
2
3

05日目

文字列の定義:
·Python における文字列は、引用符で囲まれた文字の集合として定義されます。
·Python は、一重引用符または二重引用符のペアでの使用をサポートしています。

Python の一般的なエスケープ
文字 エスケープ文字の説明
\ バックスラッシュ記号
' 一重引用符
" 二重引用符
\n 改行
\t 水平タブ (TAB)
\r キャリッジ リターン

文字列のスライスと結合
タプルと同様で変更不可
0 から開始 (Java と同じ)
スライスは通常、[開始インデックス]に対応する要素を含み、[終了インデックス]に対応する要素を除く start:end の形式で記述されます。つまり、ヘッダーのみが含まれ、末尾は含まれません。
·インデックス値は正または負の値を指定できます。正のインデックスは 0 から始まり左から右に進み、負のインデックスは -1 から始まり右から左に進みます。負のインデックスを使用する場合、最後の要素からカウントが開始されます。最後の要素の位置番号は -1 です。

一般的に使用される文字列の組み込みメソッド
Capitalize() は、文字列の最初の文字を大文字に変換します。
例:

str1 = 'li lian'
print(str1.capitalize())
Li lian

· lower() は、文字列内のすべての大文字を小文字に変換します。
· upper() は、文字列内の小文字を大文字に変換します。
·swapcase() は文字列の大文字を小文字に変換し、小文字を大文字に変換します。

例:

str1 = 'LI lian'

print(str1.lower())
print(str1.upper())
print(str1.swapcase())
li lian
LI LIAN
li LIAN

count(str, beg= 0, end=len(string)) は、string 内に str が出現する回数を返します。beg または end が指定されている場合は、指定された範囲内で str が出現する回数を返します。
例:

str2 = "DAXIExiaoxie"
print(str2.count('xi')) 
2

· openswith(suffix, beg=0, end=len(string)) 文字列が指定された部分文字列サフィックスで終わるかどうかを確認し、そうであれば True を返し、それ以外の場合は False を返します。beg と end に値を指定した場合は、指定された範囲内であるかどうかを確認します。
·startswith(substr, beg=0,end=len(string)) 文字列が指定された部分文字列 substr で始まるかどうかを確認し、そうであれば True を返し、それ以外の場合は False を返します。beg と end に値を指定した場合は、指定された範囲内であるかどうかを確認します。

例:

str1 = 'Li lian'
print(str1.endswith('ian'))
print(str1.endswith('li'))
print(str1.startswith('Li'))
print(str1.startswith('li'))
True
False
True
False

find(str, beg=0, end=len(string)) str が文字列に含まれているかどうかを確認します。指定された範囲の最初と最後が含まれている場合は、指定された範囲に含まれているかどうかを確認し、含まれている場合は開始インデックス値を返します。それ以外の場合は -1 を返します。
rfind(str, beg=0,end=len(string)) find() 関数と似ていますが、右から検索を開始します。
注: 2 つの関数の開始は逆になります。

day06: セットとシーケンス

Set
Python では、set は dict に似ており、これもキーのセットですが、値を保存しません。キーは繰り返すことができないため、セットには繰り返されるキーはありません。

キーは不変型、つまりハッシュ可能な値であることに注意してください。
例:

num = {
    
    }
print(type(num)) 
num = {
    
    1, 2, 3, 4}
print(type(num))
<class 'dict'>
<class 'set'>

コレクションの作成
まずオブジェクトを作成し、次に要素を追加します。要素を追加する場合、追加された要素は常にコレクションの最初になります。
· s = {} は空の辞書を作成するため、s = set() は空のコレクションを作成する場合にのみ使用できます。
·一連の要素を中かっこ {要素 1, 要素 2, ..., 要素 n} で直接囲みます。
·重複する要素はセット内で自動的にフィルタリングされます。これがコレクションセットの特徴です。

set(value) ファクトリ関数を使用して、リストまたはタプルをセットに変換します。

セットへの要素の追加には、セットの組み込みメソッドである
set.add(elmnt) が使用されます。追加された要素がすでにセットに存在する場合、操作は実行されません。

·set.update(set) は現在のコレクションを変更するために使用され、新しい要素またはコレクションを現在のコレクションに追加できます。追加された要素がすでにコレクションに存在する場合、その要素は 1 回だけ表示され、重複は無視されます。
·set.remove(item) は、コレクション内の指定された要素を削除するために使用されます。要素が存在しない場合はエラーが発生します。

Remove 関数と diacard 関数の違い:
·set.discard(value) は、指定された set 要素を削除するために使用されます。存在しない要素を削除すると、remove() メソッドはエラーをスローしますが、discard() メソッドはエラーをスローしません。

·set.pop()は要素をランダムに削除するために使用されます。

順序

Python では、シーケンス タイプには文字列、リスト、タプル、セット、ディクショナリが含まれます。これらのシーケンスはいくつかの一般的な演算をサポートしますが、特にセットとディクショナリはインデックス付け、スライス、加算、および乗算の演算をサポートしません。

シーケンス用のいくつかの組み込み関数:反復可能なオブジェクトをリストに
変換します。list(sub)
·tuple(sub)反復可能なオブジェクトをタプルに変換します。
· str(obj)obj オブジェクトを文字列に変換します。
·len(s)オブジェクト (文字、リスト、タプルなど) の要素の長さまたは数を返します。
·max(sub)シーケンスまたはパラメータのセットの最大値を返します。
min(sub)シーケンスまたはパラメータのセットの最小値を返します。

zip(iter1 [,iter2 […]]) は、
反復可能なオブジェクトをパラメータとして受け取り、オブジェクト内の対応する要素をタプルにパックし、これらのタプルで構成されるオブジェクトを返すために使用されます。これの利点は、Quite を節約できることです。たくさんの記憶。
list() 変換を使用してリストを出力できます。
各イテレータの要素数が一致しない場合、返されるリストの長さは最も短いオブジェクトと同じになり、* 演算子を使用してタプルをリストに解凍できます。

例:

a = [1, 2, 3]
b = [4, 5, 6]
c = [4, 5, 6, 7, 8]

zipped = zip(a, b)
print(zipped)  # <zip object at 0x000000C5D89EDD88>
print(list(zipped))  # [(1, 4), (2, 5), (3, 6)]
zipped = zip(a, c)
print(list(zipped))  # [(1, 4), (2, 5), (3, 6)]

a1, a2 = zip(*zip(a, b))
print(list(a1))  # [1, 2, 3]
print(list(a2))  # [4, 5, 6]
<zip object at 0x000001F0517E38C8>
[(1, 4), (2, 5), (3, 6)]
[(1, 4), (2, 5), (3, 6)]
[1, 2, 3]
[4, 5, 6]

おすすめ

転載: blog.csdn.net/weixin_41807182/article/details/108482129