ホームページ >バックエンド開発 >Python チュートリアル >Pythonの高度な関数をリストする

Pythonの高度な関数をリストする

高洛峰
高洛峰オリジナル
2017-03-02 16:23:271758ブラウズ

この記事では主にPythonのリストの高度な機能を詳しく紹介します

リストをスタックとして使用する: #スタックのようにリストを使用する

リストをキューとして使用する: #リストをキューとして使用する: #リストをキューのように使用する

stack = [3, 4, 5] 
stack.append(6) 
stack.append(7) 
stack 
[3, 4, 5, 6, 7] 
stack.pop() #删除最后一个对象 
7 
stack 
[3, 4, 5, 6] 
stack.pop() 
6 
stack.pop() 
5 
stack 
[3, 4]

3つの組み込み関数: 3つの重要な組み込み関数

filter( )、map()、およびreduce()。

1)、filter(function, sequence):: 関数functionのルールに従ってリストシーケンス内のデータをフィルタリングします

> from collections import deque #这里需要使用模块deque 
> queue = deque(["Eric", "John", "Michael"])
> queue.append("Terry")      # Terry arrives
> queue.append("Graham")     # Graham arrives
> queue.popleft()         # The first to arrive now leaves
'Eric'
> queue.popleft()         # The second to arrive now leaves
'John'
> queue              # Remaining queue in order of arrival
deque(['Michael', 'Terry', 'Graham'])


2)、map(関数 , シーケンス):

マップ関数は、関数関数の規則に従ってリストシーケンスの同じ処理を実装します。

ここでのシーケンスはリストに限定されず、タプルも対象となります。

> def f(x): return x % 3 == 0 or x % 5 == 0
... #f函数为定义整数对象x,x性质为是3或5的倍数
> filter(f, range(2, 25)) #筛选
[3, 5, 6, 9, 10, 12, 15, 18, 20, 21, 24]


注: ここでのパラメータリストは主にカスタム関数のパラメータの数に依存します: def func(x,y) map(func, sequence1)。 、sequence2) 例:

> def cube(x): return x*x*x #这里是立方计算 还可以使用 x**3的方法
...
> map(cube, range(1, 11)) #对列表的每个对象进行立方计算
[1, 8, 27, 64, 125, 216, 343, 512, 729, 1000]

3)、reduce(function, sequence):

reduce 関数の機能は、関数関数に従ってシーケンス内のデータを操作することです。たとえば、関数演算を実行します。リストの最初の数値と 2 番目の数値は、取得された結果とリストの次のデータに対して実行され、ループが続きます...

例:

 seq = range(8)  #定义一个列表
> def add(x, y): return x+y #自定义函数,有两个形参
...
> map(add, seq, seq) #使用map函数,后两个参数为函数add对应的操作数,如果列表长度不一致会出现错误
[0, 2, 4, 6, 8, 10, 12, 14]


リスト内包表記:

ここでは、リストのいくつかの応用例を紹介します:

squares = [x* *2 for x in range(10)]

#リストを生成する リストは、リストによって生成されたリストの二乗計算の結果です。範囲(10)。
[(x, y) for x in [1,2,3] for y in [3,1,4] if x != y]

#[(1, 3), (1, 4) ), (2, 3), (2, 1), (2, 4), (3, 1), (3, 4)] ここに生成されたリストがあります。リストの各項目はタプルであり、それぞれのタプルは x と y で構成され、x はリスト [1,2,3] によって提供され、y は [3,1,4] から取得され、ルール x!=y を満たします。
ネストされたリストの内包表記:
ここで翻訳するのは難しいので、例を挙げてみましょう:

def add(x,y): return x+y
...
reduce(add, range(1, 11))
55

ここでの 2 つのレベルのネストはさらに厄介です: 行列行列の場合、行の場合。 in行列で行列を抽出します 各行について、 row[i] は各行のリストの i 番目 (添え字) を取り出してリストを生成します。その後、 i は range(4) の i から取得され、リストのリスト。

del ステートメント:

リスト内の指定されたデータを削除します。例:

matrix = [          #此处定义一个矩阵
...   [1, 2, 3, 4],
...   [5, 6, 7, 8],
...   [9, 10, 11, 12],
... ]
[[row[i] for row in matrix] for i in range(4)]
#[[1, 5, 9], [2, 6, 10], [3, 7, 11], [4, 8, 12]]

Sets: Sets

> a = [-1, 1, 66.25, 333, 333, 1234.5]
>del a[0] #删除下标为0的元素
>a
[1, 66.25, 333, 333, 1234.5]
>del a[2:4] #从列表中删除下标为2,3的元素
>a
[1, 66.25, 1234.5]
>del a[:] #全部删除 效果同 del a
>a
[]

Dictionaries: 辞書

りー

ルール生成辞書:

> basket = ['apple', 'orange', 'apple', 'pear', 'orange', 'banana']
>>> fruit = set(basket)        # create a set without duplicates
>>> fruit
set(['orange', 'pear', 'apple', 'banana'])
>>> 'orange' in fruit         # fast membership testing
True
>>> 'crabgrass' in fruit
False

>>> # Demonstrate set operations on unique letters from two words
...
>>> a = set('abracadabra')
>>> b = set('alacazam')
>>> a                 # unique letters in a
set(['a', 'r', 'b', 'c', 'd'])
>>> a - b               # letters in a but not in b
set(['r', 'd', 'b'])
>>> a | b               # letters in either a or b
set(['a', 'c', 'r', 'd', 'b', 'm', 'z', 'l'])
>>> a & b               # letters in both a and b
set(['a', 'c'])
>>> a ^ b               # letters in a or b but not both
set(['r', 'd', 'b', 'm', 'z', 'l'])

enumerate():

要素と添字の走査

enumerate 関数は、シーケンス内の要素とその添字を反復処理するために使用されます:

>>> tel = {'jack': 4098, 'sape': 4139}
>>> tel['guido'] = 4127 #相当于向字典中添加数据
>>> tel
{'sape': 4139, 'guido': 4127, 'jack': 4098}
>>> tel['jack'] #取数据
4098
>>> del tel['sape'] #删除数据
>>> tel['irv'] = 4127   #修改数据
>>> tel
{'guido': 4127, 'irv': 4127, 'jack': 4098}
>>> tel.keys()    #取字典的所有key值
['guido', 'irv', 'jack']
>>> 'guido' in tel #判断元素的key是否在字典中
True
>>> tel.get('irv') #取数据
4127

zip():

zip() は Python の組み込み関数であり、一連の反復可能なオブジェクトをパラメーターとして受け取り、オブジェクト内の対応する要素をタプル (タプル) にパックし、これらで構成されるリストを返します。タプル)。渡されたパラメータの長さが等しくない場合、返されるリストの長さは、パラメータの中で最も短いオブジェクトと同じになります。リストは * 演算子を使用して解凍 (解凍) できます。

>>> {x: x**2 for x in (2, 4, 6)}
{2: 4, 4: 16, 6: 36}

zip に関する簡単な例:

>>> for i, v in enumerate(['tic', 'tac', 'toe']):
...   print i, v
...
0 tic
1 tac
2 toe

reversed(): reverse

>>> questions = ['name', 'quest', 'favorite color']
>>> answers = ['lancelot', 'the holy grail', 'blue']
>>> for q, a in zip(questions, answers):
...   print 'What is your {0}? It is {1}.'.format(q, a)
...
What is your name? It is lancelot.
What is your quest? It is the holy grail.
What is your favorite color? It is blue.

sorted(): sort

りー

Pythonのセットこれは他の言語と同様で、関係のテストと重複要素の削除を含む基本的な関数です

ループ内で反復しているシーケンスを変更するには (たとえば、特定の項目を複製する場合)、最初に次のようにすることをお勧めします。シーケンスをループしても、暗黙的にコピーが作成されるわけではありません。スライス表記を使用すると、これが特に便利になります。

Python の高度なリスト関数に関連するその他の記事については、PHP 中国語 Web サイトに注目してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。