単一リストからのペア

| | | | | |

多くの場合、私はリストをペアで処理する必要があることに気づきました。それを行うためのpythonicで効率的な方法はどれかと思い、Googleでこれを見つけました:

 ペア=zip(t [:: 2]、t [1 :: 2]) 

それは十分にpythonicだと思いましたが、最近のイディオムと効率、いくつかのテストを行うことにしました:

  itertoolsからのインポート時間importislice、izip def pair_1(t):return zip(t [:: 2]、t [1 :: 2])def pair_2(t):return izip(t [:: 2]、t [ 1 :: 2])def pair_3(t):return izip(islice(t、None、None、2)、islice(t、1、None、2))A = range(10000)B = xrange(len(A ))def pair_4(t):#tの値を無視します!t = B return izip(islice(t、None、None、2)、islice(t、1、None、2))for f in pair_1、pairs_2、pairs_3 、pairs_4:#ペアリングの時間s = time.time()for i in range(1000):p = f(A)t1 = time.time()-s#ペアを使用した時間s = time.time()for私は鳴ったe(1000):p = f(A)for a、b in p:pass t2 = time.time()-s print t1、t2、t2-t1  

これらは私のコンピューターでの結果:

  1.48668909073 2.63187503815 1.14518594742 0.105381965637 1.35109519958 1.24571323395 0.00257992744446 1.46182489395 1.45924496651 0.00251388549805 1.70076990128 1.69825601578  

Pythonでのリスト、リストインデックス、およびリストスライスの実装は非常に効率的です。これは、「快適で予期しない結果になります。

リストをペアでトラバースする別の「より良い」方法はありますか?

リストの場合は注意してください要素の数が奇数の場合、最後の要素はどのペアにも含まれません。

すべての要素が含まれていることを確認する正しい方法はどれですか?

テストの回答から次の2つの提案を追加しました。

  def pairwise(t):it = iter(t)return izip(it、it)defchunkwise(t、 size = 2):it = iter(t)return izip(* [it] * size) 

結果は次のとおりです:

  0.00159502029419 1.25745987892 1.25586485863 0.00222492218018 1.23795199394 1.23572707176  

これまでの結果

最もPython的で非常に効率的:

  pair = izip(t [:: 2] 、t [1 :: 2]) 

最も効率的で非常にpythonic:

  pair = izip(* [iter(t)] * 2)  

最初の答えが2つの反復子を使用し、2番目の答えが2つの反復子を使用していることを理解するのに少し時間がかかりました単一の要素。

奇数の要素を持つシーケンスを処理するには、元のシーケンスを拡張して、前の要素とペアになる1つの要素( None )を追加することをお勧めします。最後の要素、 itertools.izip_longest()で実現できるもの。

最後に

Python 3.xでは、 zip ()itertools.izip()として動作し、 itertools.izip()はなくなりました。

この記事が問題の解決に役立つことを願っています。 単一リストからのペア とは別に、他の exp 関連のトピックを確認してください。

Python で上達したいですか?  最高の Python オンライン コース 2022 のレビューをご覧ください。 データ サイエンスに興味がある場合は、R でプログラミングを学ぶ方法も確認してください。

ちなみに、この資料は他の言語でも利用できます:



Oliver Richtgofen

Abu Dhabi | 2022-11-29

シンプルにまとめられていて分かりやすい。シェアしてくださってありがとうございます。単一リストからのペアやsinの問題はいつも私の弱点でした😁。. 昨日確認したところ、動作しています!

Javier Ungerschaft

Munchen | 2022-11-29

私はコーディングの面接の準備をしていました、これを明確にしてくれてありがとう - Pythonの単一リストからのペアは最も単純なものではありません. 卒論で使わせていただきます

Schneider Richtgofen

Shanghai | 2022-11-29

私はコーディングの面接の準備をしていました、これを明確にしてくれてありがとう - Pythonの単一リストからのペアは最も単純なものではありません. それが最良の方法であるかどうかはわかりません

Shop

Learn programming in R: courses

$

Best Python online courses for 2022

$

Best laptop for Fortnite

$

Best laptop for Excel

$

Best laptop for Solidworks

$

Best laptop for Roblox

$

Best computer for crypto mining

$

Best laptop for Sims 4

$

Latest questions

NUMPYNUMPY

Common xlabel/ylabel for matplotlib subplots

12 answers

NUMPYNUMPY

How to specify multiple return types using type-hints

12 answers

NUMPYNUMPY

Why do I get "Pickle - EOFError: Ran out of input" reading an empty file?

12 answers

NUMPYNUMPY

Flake8: Ignore specific warning for entire file

12 answers

NUMPYNUMPY

glob exclude pattern

12 answers

NUMPYNUMPY

How to avoid HTTP error 429 (Too Many Requests) python

12 answers

NUMPYNUMPY

Python CSV error: line contains NULL byte

12 answers

NUMPYNUMPY

csv.Error: iterator should return strings, not bytes

12 answers


Wiki

Python | How to copy data from one Excel sheet to another

Common xlabel/ylabel for matplotlib subplots

Check if one list is a subset of another in Python

sin

How to specify multiple return types using type-hints

exp

Printing words vertically in Python

exp

Python Extract words from a given string

Cyclic redundancy check in Python

Finding mean, median, mode in Python without libraries

cos

Python add suffix / add prefix to strings in a list

Why do I get "Pickle - EOFError: Ran out of input" reading an empty file?

Python - Move item to the end of the list

Python - Print list vertically