この記事では主に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]
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'])
マップ関数は、関数関数の規則に従ってリストシーケンスの同じ処理を実装します。
ここでのシーケンスはリストに限定されず、タプルも対象となります。> 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 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
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}
>>> 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 サイトに注目してください。