Pythonの一般的なデータ構造の照合

Pythonの一般的なデータ構造の配置#

1.シーケンス(リスト、タプル、文字列)##

以下は、リスト、タプル、および文字列に焦点を当てています。

1、 リスト###

(1)、####を作成します

list1=['hello','world']
print list1
list2=[1,2,3]
print list2

出力:
[' hello', 'world']
[1, 2, 3]

ご覧のとおり、ここでの作成方法はjavascriptの配列と非常によく似ています。

(2)、リスト機能####

list関数を使用して文字列のリストを作成することは非常に効果的です(実際、listは関数ではなく型です)。

list3=list("hello")
print list3

出力:
[' h', 'e', 'l', 'l', 'o']

2、 タプル###

(1)、####を作成します

t1=1,2,3
t2="jeffreyzhao","cnblogs"
t3=(1,2,3,4)
t4=()
t5=(1,)
print t1,t2,t3,t4,t5

出力:
(1, 2, 3) (' jeffreyzhao', 'cnblogs') (1, 2, 3, 4) () (1,)

上記の分析から、次のことがわかります。
a。コマ分離いくつかの値、タプルは自動的に作成されます。
b。ほとんどの場合、タプルは括弧で囲まれています。
c。空のタプルは、コンテンツなしで括弧で表すことができます。
d。値を1つだけ含むタプルは、コンマ(、)を追加する必要があります。

(2)、タプル関数####

タプル関数は、シーケンスのリスト関数とほぼ同じです。つまり、シーケンス(シーケンスに注意)をパラメーターとして受け取り、それをタプルに変換します。

パラメータがタプルの場合、パラメータはそのまま返されます。

t1=tuple([1,2,3])
t2=tuple("jeff")
t3=tuple((1,2,3))
print t1
print t2
print t3
t4=tuple(123)
print t4

出力:
(1, 2, 3)
(' j', 'e', 'f', 'f')
(1, 2, 3)
Traceback (most recent call last):

File "F:\Python\test.py", line 7, in

t4=tuple(123)

TypeError: 'int' object is not iterable

3、 ストリング###

(1)####を作成します

str1='Hello world'
print str1
print str1[0]for c in str1:
 print c

出力:
Hello world
H
H
e
l
l
o

w
o
r
l
d

(2)フォーマット####

str1='Hello,%s'%'world.'
print str1
strs=('Hello','world') #タプル
str1='%s,%s'% strs
print str1
d={'h':'Hello','w':'World'} #辞書
str1='%(h)s,%(w)s'% d
print str1

出力:

Hello,world
Hello,World

str1='%s,%s'%'Hello','world'
print str1

出力:

Traceback (most recent call last):

File "F:\Python\test.py", line 2, in

str1='%s,%s'%'Hello','world'

TypeError: not enough arguments for format string

str1='%s%%'%100

print str1

出力:100%

from math import pi
str1='%.2f'% pi #精度2
print str1
str1='%10f'% pi #フィールド幅10
print str1
str1='%10.2f'% pi #フィールド幅10、精度2
print str1

出力:

3.14

3.141593

3.14

文字列のフォーマットには、他にも多くの豊富な変換タイプが含まれています。公式ドキュメントを参照してください。

以下に示すように、多くのUNIXシェルの変数置換と同様に機能します。

from string import Template

str1=Template('$x,$y!')

str1=str1.substitute(x='Hello',y='world')

print str1

出力:

Hello,world!

from string import Template

str1=Template('Hello,w${x}d!')

str1=str1.substitute(x='orl')

print str1

出力:

Hello,world!

from string import Template

str1=Template('$x$$')

str1=str1.substitute(x='100')

print str1

出力:100 $

from string import Template

d={'h':'Hello','w':'world'}

str1=Template('$h,$w!')

str1=str1.substitute(d)

print str1

出力:

Hello,world!

書式設定に加えて、Python文字列には多くの実用的なメソッドが組み込まれています。ここには記載されていない公式ドキュメントを参照できます。

4、 一般的なシーケンス操作(メソッド)###

リスト、タプル、および文字列から、シーケンスのいくつかの一般的な一般的な方法を「抽象化」できます(あなたが思うようにCRUDではありません)。

これらの操作には、インデックス作成、スライス、追加、乗算、および要素がシーケンスのメンバーであるかどうかの確認が含まれます。

さらに、シーケンスの長さ、最大要素と最小要素などを計算するための組み込み関数があります。

(1)インデックス####

str1='Hello'

nums=[1,2,3,4]

t1=(123,234,345)

print str1[0]

print nums[1]

print t1[2]

出力

H

2

345

魔法は、インデックスが最後の位置(右から左)から開始でき、数値が-1であるということです。

str1='Hello'

nums=[1,2,3,4]

t1=(123,234,345)

print str1[-1]

print nums[-2]

print t1[-3]

出力:

o

3

123

(2)フラグメント####

フラグメンテーション操作は、特定の範囲内の要素にアクセスするために使用されます。断片化は、コロンで区切られた2つのインデックスによって実現されます。

nums=range(10)

print nums

print nums[1:5]

print nums[6:10]

print nums[1:]

print nums[-3:-1]

print nums[-3:] #シーケンスの最後に要素を含め、最後のインデックスを空白にします

print nums[:] #シーケンス全体をコピーする

出力:

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

[1, 2, 3, 4]

[6, 7, 8, 9]

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

[7, 8]

[7, 8, 9]

nums=range(10)

print nums

print nums[0:10]  #デフォルトのステップサイズは、numsに相当する1です。[1:5:1]

print nums[0:10:2]  #ステップサイズは2です

print nums[0:10:3]  #ステップサイズは3です

## print nums[0:10:0]  #ステップサイズは0です

print nums[0:10:-2]  #ステップサイズは-2

出力:

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

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

[0, 2, 4, 6, 8]

[0, 3, 6, 9]

[]

(3)シーケンスの追加####

str1='Hello'

str2=' world'

print str1+str2

num1=[1,2,3]

num2=[2,3,4]

print num1+num2

print str1+num1

出力:

Hello world

[1, 2, 3, 2, 3, 4]

Traceback (most recent call last):

File "F:\Python\test.py", line 7, in

print str1+num1

TypeError: cannot concatenate 'str' and 'list' objects

(4)乗算####

print [None]*10

str1='Hello'

print str1*2

num1=[1,2]

print num1*2

print str1*num1

出力:

[ None, None, None, None, None, None, None, None, None, None]

HelloHello

[1, 2, 1, 2]

Traceback (most recent call last):

File "F:\Python\test.py", line 5, in

print str1*num1

TypeError: can't multiply sequence by non-int of type 'list'

(5)メンバーシップ(重要)####

str1='Hello'

print 'h'in str1 

print 'H'in str1

num1=[1,2]

print 1in num1

出力:

False

True

True

(6)長さ、最大値、最小値####

str1='Hello'

print len(str1) 

print max(str1)

print min(str1)

num1=[1,2,1,4,123]

print len(num1) 

print max(num1)

print min(num1)

出力:

5

o

H

5

123

1

2.マッピング(辞書)(マップ)##

辞書を作成し、辞書に値を割り当てる方法###

簡単に言うと、辞書は中括弧で囲まれたキーと値のペアのコレクションです。 (キーと値のペアはアイテムとも呼ばれます)

adict ={}

adict ={key1:value2, key2:value2, …}

または、dict()関数を使用します。たとえば、adict = dict()またはadict = dict((['x'、1]、['y'、2]))それは正しいですか?

adict = dict(['x'、1]、['y'、2])。次のようなキーワードパラメータを使用して辞書を作成します。adict= dict(name = 'allen'、age = '40')

または、fromkeys()メソッドを使用します(例:adict = {} .fromkeys(( 'x'、 'y')、-1)この方法で作成された辞書の値は同じです。値を指定しない場合、デフォルトはNoneです。

  1. キーと値はコロン「:」で区切られます。

  2. アイテムとアイテムはコンマ "、"で区切られます。

  3. 辞書のキーは一意である必要があり、値は一意である必要はありません。

辞書の基本操作###

adict [key]の形式は、キーキーに対応する値を返します。キーが辞書にない場合、KeyErrorが発生します。

  1. データ項目(新しい要素)またはキーと値のペアを追加します

adict [new_key] =アイテムを追加するための値フォーム

  1. データ項目(要素)またはキーと値のペアを更新します

adict[old_key] = new_value

  1. データ項目(要素)またはキーと値のペアを削除します

del adict [key]キーアイテムの削除/ deladict辞書全体の削除

adict.pop(key)キー項目を削除し、キーに対応する値を返します

マッピングタイプ演算子###

a。辞書はスプライシングおよび繰り返し演算子(+、*)をサポートしていません

b。辞書比較操作

まず、辞書の要素数である辞書の長さを比較します

主な比較

値の比較

例:

adict ={}

bdict ={'name':'allen','age':'40′}cmp(adict, bdict)  #未満 ->-1はより大きい–>1は–に等しい>0

関連関数のマッピング###

  1. len()は辞書の長さを返します

  2. hash()は、オブジェクトのハッシュ値を返します。これは、オブジェクトを辞書キーとして使用できるかどうかを判断するために使用できます。

  3. dict()ファクトリ関数。辞書の作成に使用されます

辞書メソッド###

  1. adict.keys()は、辞書のすべてのキーを含むリストを返します。

  2. adict.values()は、辞書のすべての値を含むリストを返します。

  3. adict.items()は、すべての(キー、値)プリミティブを含むリストを返します。

  4. adict.clear()は、辞書内のすべてのアイテムまたは要素を削除します。

  5. adict.copy()は、辞書の浅いコピーのコピーを返します。

  6. adict.fromkeys(seq、val = None)は、seqの要素を辞書のキーとして使用し、valを辞書のすべてのキーに対応する初期値として使用して、新しい辞書を作成して返します(デフォルトはNone)。

  7. adict.get(key、default = None)は、辞書内のキーに対応する値を返します。キーが辞書に存在しない場合は、defaultの値を返します(デフォルトはデフォルトでNoneです)。

  8. adict.has_key(key)キーが辞書にある場合は、Trueを返し、そうでない場合はFalseを返します。で使用し、では使用しないでください。

  9. adict.iteritems()、adict.iterkeys()、adict.itervalues()は、対応する非反復メソッドと同じですが、違いは、リストではなく反復子を返すことです。

  10. adict.pop(key [、default])はgetメソッドに似ています。キーが辞書に存在する場合は、そのキーに対応する値を削除して返します。キーが存在せず、デフォルト値が指定されていない場合、キーエラー例外が発生します。

  11. adict.setdefault(key、default = None)はset()メソッドに似ていますが、辞書にKeyキーがない場合、adict [key] = defaultが割り当てられます。

  12. adict.update(bdict)辞書bdictのキーと値のペアを辞書adictに追加します。

辞書トラバーサル###

1、 辞書のキーをトラバースします

for key in adict.keys():print key

2、 辞書の値をトラバースする

for value in adict.values(): print value

3、 辞書の項目(要素)をトラバースします

for item in adict.items():print item

4、 辞書のキー値をトラバースします

for item,value in adict.items(): print 'key=%s, value=%s'%(item, value)for item,value in adict.iteritems(): print ‘'key=%s, value=%s'%(item, value)

注:adict.items()のitem、valueの場合:print'key =%s '、' value =%s '、%(item、value)この書き方は間違っています

辞書の使用に関する注意事項###

1、 1つのキーを複数の値に対応させることはできません。

2、 キーはハッシュ可能である必要があります。

セットする##

セットはPython2.3で導入され、通常、以下に示すように、新しいバージョンのPythonを使用して直接作成できます。

strs=set(['jeff','wong','cnblogs'])

nums=set(range(10))
  1. コピーは無視されます(メンバーは複製されず、重複は削除されます)

コレクションは主にメンバーシップの確認に使用されるため、コピーは無視されます。次の例に示すように、出力されるコレクションの内容は同じです。

set1=set([0,1,2,3,0,1,2,3,4,5])

print set1

set2=set([0,1,2,3,4,5])

print set2

出力は次のとおりです。

set([0, 1, 2, 3, 4, 5])

set([0, 1, 2, 3, 4, 5])

  1. コレクション要素の順序は任意です

これは辞書と非常によく似ており、セットは値のない辞書として簡単に理解できます。

strs=set(['jeff','wong','cnblogs'])

print strs

出力は次のとおりです。

set(['wong', 'cnblogs', 'jeff'])

  1. 一般的な収集方法

a。交差点ユニオン

set1=set([1,2,3])

set2=set([2,3,4])

set3=set1.union(set2)

print set1

print set2

print set3

出力:

set([1, 2, 3])

set([2, 3, 4])

set([1, 2, 3, 4])

ユニオン操作は、元のセットを変更せずに2つのセットのユニオンを返します。同じ結果を得るには、ビット単位のAND(OR)演算子 "|"を使用します。

set1=set([1,2,3])

set2=set([2,3,4])

set3=set1|set2

print set1

print set2

print set3

出力は、上記のユニオン操作とまったく同じです。

set1=set([1,2,3])

set2=set([2,3,4])

set3=set1&set2

print set1

print set2

print set3

print set3.issubset(set1)

set4=set1.copy()

print set4

print set4 is set1

出力は次のとおりです。

set([1, 2, 3])

set([2, 3, 4])

set([2, 3])

True

set([1, 2, 3])

False

set1=set([1])

print set1

set1.add(2)

print set1

set1.remove(2)

print set1

print set1

print 29in set1

set1.remove(29) #存在しないアイテムを削除します

出力:

set([1])

set([1, 2])

set([1])

set([1])

False

Traceback (most recent call last):

File "F:\Python\test.py", line 9, in

set1.remove(29) #存在しないアイテムを削除します

KeyError: 29

セットは変更可能であるため、辞書キーとして使用することはできません。コレクション自体には不変の値のみを含めることができるため、他のコレクションを含めることはできません。

set1=set([1])

set2=set([2])

set1.add(set2)

出力は次のとおりです。

Traceback (most recent call last):

File "F:\Python\test.py", line 3, in

set1.add(set2)

TypeError: unhashable type: 'set'

set1=set([1])

set2=set([2])

set1.add(frozenset(set2))

print set1

出力:

set([1, frozenset([2])])

Recommended Posts

Pythonの一般的なデータ構造の照合
pythonデータ構造
Pythonのデータ構造とアルゴリズム
02.Pythonデータタイプ
Pythonデータモデル
Pythonデータ分析
Pythonデータ形式-CSV
Pythonデータ分析-データ更新
Pythonデータ分析-関数の適用
Pythonデータ分析-データ選択
Pythonの基本的なデータタイプ
Pythonの基本的なデータタイプ
09.Python3の共通モジュール
Pythonデータ分析-データ確立
Python解析可変長構造
Python3クローラーデータクリーニング分析
Pythonは単純なXMLデータを解析します
2020--Python文法の一般的な知識のポイント
Pythonデータサイエンス:ロジスティック回帰
Pythonデータサイエンス:正規化方法
Pythonデータサイエンス:関連分析
Pythonの一般的な例外処理メカニズム
Pythonデータサイエンス:線形回帰
PythonFakerデータ偽造モジュール
Python共通モジュールのコレクション
Pythonデータサイエンス:Chi-Square Test
Pythonデータサイエンス:線形回帰診断
pythonの一般的なエラーと解決策
Python関数のいくつかの一般的なモード
Pythonはオンラインマイクロブログデータの視覚化を実現します
pythonはデータマイニングに適していますか