1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

PythonでUnderscore.jsのような配列操作

Last updated at Posted at 2018-10-20

JavaScriptで書いてると、Underscore.jsがとても便利でしてな(´・ω・`)

Pythonで配列操作やろうとした時に迷うことが多いので、自分用に対応表を作っておくことにしました。いいやり方見つけるたびにアップデートしていこうと思います。

基本的な配列操作(append/insert/pop/extend/+/*/スライス)は省略。

対応表

Underscore.js Python 結果(Python) 動作
_.indexOf([1, 2, 3], 2) [1, 2, 3].index(2) 1 配列のどこにあるかインデックスを返す。なければ-1
_.lastIndexOf([1, 2, 3, 2], 2) (lambda array, val: len(array)-1 - array[::-1].index(val))([1, 2, 3, 2], 2) 3 配列の後ろから検索してindexを返す。なければ-1。Python版は逆順配列を新たに作るので巨大な配列には使用しない
_.find([1, 2, 3], (val)=>{ return val == 2; }) next((val for val in [1, 2, 3] if val == 2), None) 2 配列の中に条件の合う値が存在すればそれを返す。無ければundefined/None
_.contains([1, 2, 3], 2) 2 in [1, 2, 3] True 配列に含まれるかどうかbooleanで返す
_.every([1, 2, 3], (val)=>{ return val < 10; }) all(val < 10 for val in [1, 2, 3]) True 配列の内容が全て条件に当てはまるか
_.some([1, 2, 3], (val)=>{ return val < 2; }) any(val < 2 for val in [1, 2, 3]) True 配列の内容が1つでも条件に当てはまるか
_.filter([1, 2, 3], (val)=>{ return val%2 != 0; }) [val for val in [1, 2, 3] if val%2 != 0] [1, 3] 条件に一致した値だけ抜き出す
_.map([1, 2, 3], (val)=>{ return val+1; }) [val+1 for val in [1, 2, 3]] [2, 3, 4] 配列の値を加工した新たな配列を作る
_.uniq([1, 2, 3, 2, 1]) list(set([1, 2, 3, 2, 1])) [1, 2, 3] 重複を取り除く(※Pythonは順不同)
_.difference([1, 2, 3, 4, 5], [5, 2, 10]) [val for val in [1, 2, 3, 4, 5] if val not in list(set([5, 2, 10]))] [1, 3, 4] 別の配列に存在しない値だけを返す
_.zip([1, 2], ["a", "b"], [true, false]) list(zip([1, 2], ["a", "b"], [True, False])) [(1, 'a', True), (2, 'b', False)] 各配列の先頭要素から順番にグルーピングして1つの配列に
_.unzip([[1, 'a', true], [2, 'b', false]]) list(zip(*[[1, 'a', True], [2, 'b', False]])) [(1, 2), ('a', 'b'), (True, False)] zipの逆動作。配列をバラして各グループでzipしなおす
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?