ホームページ >バックエンド開発 >Python チュートリアル >Python でリストを操作するための一般的なメソッドを共有する

Python でリストを操作するための一般的なメソッドを共有する

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBオリジナル
2016-06-16 08:45:171018ブラウズ

以下は、リストに対してよく使用されるメソッド操作のリストと簡単な例です:

1. Append
リストの最後に要素を追加するには、リストの最後に要素を追加する必要があります。
A. 追加で追加されるパラメータは全体として

コードをコピーします コードは次のとおりです。次のように:

>>> name = list("scott")
>>> name
['s', 'c', 'o ', 't', 't']
>>> name.append(list("tiger"))
>>> name
['s', 'c ', 'o', 't', 't', [' ', ' t', 'i', 'g', 'e', 'r']]

取得された値は次ではありません: ['s', 'c', 'o', 't', 't', ' ', 't', 'i', 'g', 'e', 'r ']
この種の追加メソッドが必要な場合は、スライス割り当て (または後述の拡張メソッド) を試すことができます:

コードをコピー コードは次のとおりです:

>>> name = list("scott")
>>> name
['s', 'c ', 'o ', 't', 't']
>>> name[len(name):] = list("tiger") #末尾から
を追加 >> > 名前
['s'、'c'、'o'、't'、't'、' '、't'、'i'、'g'、'e'、'r ']

B.append では一度に 1 つの要素しか追加できません

コードをコピー コードは次のとおりです:

> ;>> ; name = list("scott")
>>>name
['s', 'c', 'o', 't', 't']
>> > name.append("A","B") #複数の要素を追加するとエラーが報告されます
トレースバック (最新の呼び出しは最後):
ファイル "" 1 行目、?
TypeError: append() は引数を 1 つだけ取ります (2 つ与えられます)
>>> name.append("A")
>>> >['s', 'c', 'o', 't', 't', 'A']

2.カウント

リスト内に要素が出現する回数をカウントします


コードをコピーします コードは次のとおりです:
>>> ; 名前 = list("スコット")
>>> 名前
['s', 'c', 'o', 't', 't']
>> name.count('s')
1
>name.count("t")
2
> .count("A ")
0
>name.append(list("Python"))
>[', ' c'、'o'、't'、't'、['P'、'y'、't'、'h'、'o'、'n']]
>>> name.count([ 'P', 'y', 't', 'h', 'o', 'n'])
1


3. 延長

複数の値を別のシーケンスで元のリストに追加します

コードをコピーします コードは次のとおりです: >>> name = list("scott")
> ;>> 名前
['s', 'c', 'o', 't', 't']
>>> name.extend(" タイガー"))
>>> 名前
['s', 'c', 'o', 't', 't', ' ', 't', 'i', 'g '、' e'、'r']


もちろん、スライス割り当てを使用してこれを実現できます:


コードをコピーします コードは次のとおりです: >> 名前 = リスト("スコット")
>>> 名前
['s', 'c', 't', 't']
>> ;> name[len(name):] = list("tiger")
>>> name
['s', 'c', 'o', ' t'、't'、' '、't'、'i'、'g'、'e'、'r']


この時点で、友人は演算子「+」を直接使用できると考えるでしょう。その方が便利です:


コードをコピーします コードは次のとおりです。次のように: >>> name = list("scott")
>>> pwd = list("tiger")
>> > 名前 + パスワード
['s', 'c', 'o', 't', 't', ' ', 't', 'i', 'g', 'e', 'r']
>>> 名前
['s', 'c', 'o', 't', 't']


これら 3 つの操作の出力から、次のことがわかります。 extend とスライス代入はどちらも元のリストを変更します。比較的言えば、extend の方が読みやすく、演算子 "+" は新しいリストを生成します。元のリストに影響を与えない

元のリストに影響を与えずに新しいリストを生成する必要がある場合は、演算子「+」を使用できます。

4.インデックス
リストから特定の値に最初に一致する項目 (最初に注目してください) のインデックス位置を見つけます


コードをコピー コードは次のとおりです:

>>> name = list("scott")
>>> name
['s', 'c', 'o', 't', 't']
>>> name.index('t')    ##第一个字母t的索引位置是3
3  
>>> name.index('a')
Traceback (most recent call last):
  File "", line 1, in ?
ValueError: list.index(x): x not in list
>>> 'a' in name
False
>>> 'a' not in name
True

从输出可以看出,index找的是第一个匹配项的索引位置,而如果查找的元素不在列表中,会报错(返回-1会不会好一点呢?),当然如果想避免报
错,我们可以先用in操作,判断某个元素是否在某个列表中,如果在的话,然后进行index操作。

5. Insert
    用于将对象插入到列表中,俩个参数,第一个是索引位置,第二个插入的元素对象。

复制代码 代码如下:

 >>> name = list("scott")
 >>> name
 ['s', 'c', 'o', 't', 't']
 >>> name.insert(2,'tiger')     ##在索引为2的地方插入字符串tiger 
 >>> name
 ['s', 'c', 'tiger', 'o', 't', 't']

我们也可以用分片赋值:

复制代码 代码如下:

 >>> name = list("scott")
 >>> name
 ['s', 'c', 'o', 't', 't']
 >>> name[2:2] = ['tiger']
 >>> name
 ['s', 'c', 'tiger', 'o', 't', 't']
 >>> name[2:2] = 'tiger'
 >>> name
 ['s', 'c', 't', 'i', 'g', 'e', 'r', 'tiger', 'o', 't', 't']

这里需要注意的是,如果是插入一个元素,需要用[]括起来,不然,直接用字符串的话,是插入字符串的列表,在索引位置之后添加。
当然,用insert的可读性比分片赋值强。

6. Pop
    移除列表中的一个元素(最后一个元素),并返回该元素的值

复制代码 代码如下:

>>> name = list("scott")
>>> name
['s', 'c', 'o', 't', 't']
>>> name.pop()
't'
>>> name
['s', 'c', 'o', 't']
>>> name.append("t")
>>> name
['s', 'c', 'o', 't', 't']

分片赋值模拟pop:
复制代码 代码如下:

 >>> name = list("scott")
 >>> name
 ['s', 'c', 'o', 't', 't']
 >>> name[len(name)-1:] = []
 >>> name
 ['s', 'c', 'o', 't']

这上面用pop和append模拟了栈的先进先出LIFO。

7. Remove
   移除列表中某个值的第一匹配项: 如果有俩个相等的元素,就只是移除匹配的一个元素,如果某元素不存在某列表中,便会报错,而且一次性只能
   移除一个元素。

复制代码 代码如下:

>>> name = list("scott")
>>> name
['s', 'c', 'o', 't', 't']
>>> name.remove("t")    #去掉第一个t
>>> name
['s', 'c', 'o', 't']
>>> name.remove("A")    #不存在会报错
Traceback (most recent call last):
  File "", line 1, in ?
ValueError: list.remove(x): x not in list
>>> "A" not in name
True
>>> name.remove("s","c")  #一次只能移除一个元素
Traceback (most recent call last):
  File "", line 1, in ?
TypeError: remove() takes exactly one argument (2 given)

8.Revense

   将列表中的元素反向

复制代码 代码如下:

 >>> name = list("scott")
 >>> name
 ['s', 'c', 'o', 't', 't']
 >>> name.reverse()
 >>> name
 ['t', 't', 'o', 'c', 's']

9. Sort & Sorted

sort メソッドはリストの並べ替え、元のリストの変更に使用され、並べ替えられたリストのコピーは返されません

コードをコピー コードは次のとおりです:

>>> result = [8,5,5, 3,9 ]
>>> result.sort()
>>> 結果
[3, 5, 5, 8, 9]

元のリストに影響を与えずにリストのソートされたコピーを返したい場合はどうすればよいでしょうか? 1 つの方法は、最初に元のリストを割り当て (スライス割り当てを使用してコピーできます)、次にコピーされたリストに
を割り当てることです。ソート操作を行うには、sorted 関数を使用します。この関数は、ソートされたリストのコピーを返します:

コードをコピー コードは次のとおりです:

>>> 結果 = [8,5,5,3,9]
>>> 結果 2 = 結果 (結果)
>>>
[8, 5, 5, 3, 9]
>>> result2
[3, 5, 5, 8, 9]

カスタマイズ比較についてjavascript のように、sort を行うときに比較関数を渡すことができます。java は Comparable インスタンスを渡すことができます。Python も同様です。それはフォローアップに任せます~(@^_^@)~ 。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。