Résumé de la correspondance entre les opérations de tableau ruby et python

Aperçu

Un résumé des opérations typiques de Ruby Array et de la liste Python.

Ceci est un article pour Rubyist (Pythonista) qui vient de commencer à apprendre Python (Ruby).

Référence: Cliquez ici pour la version C ++ Résumé de la prise en charge des opérations sur les tableaux Ruby-C ++

Conditions préalables

Informations de référence

Méthode

size

[1,2,3].size   #=> 3
len( [1,2,3] )   #=> 3

each

Boucle autour de l'élément

[1,2,3,4,5].each do |x|
  puts 2*x    #=> 2,4,6,8,10
end
for x in [1,2,3,4,5]:
    print(2*x)

each_with_index

Tournez la boucle avec index

[5,4,3,2,1].each_with_index do |x,idx|
  print "#{idx}:#{x}, "
end
# => 0:5, 1:4, 2:3, 3:2, 4:1,
for idx,x in enumerate( [5,4,3,2,1] ):
    print("{0}:{1}, ".format(idx,x), end="")

Joindre des séquences

[1,2,3] + [4,5]     # [1,2,3,4,5]
[1,2,3] + [4,5]

push (<<)

Ajouter un élément à la fin

a = [1,2]
a << 3
# a => [1,2,3]
a = [1,2]
a.append(3)
# a => [1,2,3]

map

[1,2,3].map {|x| 2*x }  #=> [2,4,6]
[ 2*x for x in [1,2,3] ]                 # => [2,4,6]
list( map( lambda x: 2*x, [1,2,3] ) )    # => [2,4,6]

find

[7,8,9,10,11].find {|x| x%5 == 0 }  #=> 10
[ x for x in [7,8,9,10,11] if x % 5 == 0 ][0]   #=> 10

--Ajout: http://stackoverflow.com/questions/9868653/find-first-list-item-that-matches-criteria

next((x for x in [7,8,9,10,11] if x % 5 == 0), None)

find_all

[1,2,3,4,5].find_all {|x| x>3 }  #=> [4,5]
[ x for x in [1,2,3,4,5] if x > 3]     #=> [4,5]
list( filter( lambda x: x>3, [1,2,3,4,5] ) )    #=> [4,5]

sort

[4,1,3,2,5].sort  #=> [1,2,3,4,5]
sorted( [4,1,3,2,5] )   #=> [1,2,3,4,5]

sort_by

[4,1,2,3,5].sort_by {|x| (3-x).abs }  #=> [3,4,2,1,5]
sorted( [4,1,3,2,5], key= lambda x: abs(3-x) )

index

[5,1,4,2,3].index(2)  #=> 3
[5,1,4,2,3].index(2)  #=> 3

all?

[2,4,6,8].all? {|x| x % 2 == 0 }  #=> true
[2,4,6,9].all? {|x| x % 2 == 0 }  #=> false
all( x%2==0 for x in [2,4,6,8] )   #=> True
all( x%2==0 for x in [2,4,6,9] )   #=> False

sum

[1,3,5].inject(:+)   #=> 9
sum( [1,3,5] )

inject (reduce)

[1,2,3,4,5].inject(1) {|acc,x| acc*x }   #=> 120
[1,2,3,4,5].inject("") {|acc,x| acc + (x%2==0?'e':'o') }   #=> oeoeo
import functools
functools.reduce( lambda acc,x: acc*x, [1,2,3,4,5], 1 )
functools.reduce( lambda acc,x: acc+("e" if x%2==0 else "o") , [1,2,3,4,5], "" )

uniq

[5,1,1,2,3,5,5].uniq  #=> [5,1,2,3]
list( set( [5,1,1,2,3,5,5] ) )

li_uniq = []
for x in [5,1,1,2,3,5,5]:
  if x not in li_uniq:
    li_uniq.append(x)
li_uniq    #=> [5,1,2,3]

uniq {block}

[4,5,1,2,3,4,5].uniq {|x| x % 3 }   #=> [4,5,3]
li_uniq = []
set_uniq = set()
for x in [4,5,1,2,3,4,5]:
  if x % 3 not in set_uniq:
    li_uniq.append(x)
    set_uniq.add(x%3)
li_uniq                    #=> [4,5,3]

join

[1,5,3,2].join(":")  #=> "1:5:3:2"
":".join(map(str, [1,5,3,2]))

reverse

[1,2,3].reverse  #=> [3,2,1]
a = [1,2,3]
a.reverse!
a                #=> [3,2,1]
list( reversed([1,2,3]) )

a = [1,2,3]
a.reverse()
a                #=> [3,2,1]

group_by

["cat","bat","bear","camel","alpaca"].group_by {|x| x[0]}
# {"c"=>["cat", "camel"], "b"=>["bat", "bear"], "a"=>["alpaca"]}
d = {}
for x in ["cat","bat","bear","camel","alpaca"]:
    key = x[0]
    if key not in d:
        d[key] = []
    d[key].append(x)
d        # => {'c': ['cat', 'camel'], 'a': ['alpaca'], 'b': ['bat', 'bear']}

shuffle

[1,2,3,4,5,6,7].shuffle   #=> [2, 6, 4, 7, 5, 3, 1]
import random
a = [1,2,3,4,5,6,7]
random.shuffle(a)
a                       #=> [4, 5, 6, 2, 7, 1, 3]

Recommended Posts

Résumé de la correspondance entre les opérations de tableau ruby et python
Résumé de la prise en charge des opérations de hachage (dictionnaire) pour Ruby et Python
Résumé des index et des tranches Python
[Python] Opération d'énumération
Résumé des différences entre PHP et Python
Spécification de la plage des tableaux ruby et python
Ruby, Python et carte
Installation de Python 3 et Flask [Résumé de la construction de l'environnement]
Python et Ruby se séparent
Résumé des opérations d'annuaire Python
Résumé des arguments Python
Résumé relatif aux E / S de python et fortran
À propos des copies superficielles et profondes de Python / Ruby
[python] Opération de tranche de tableau
Comparaison de Python et Ruby (Environment / Grammar / Literal Edition)
Fonctionnement de base de Python Pandas Series et Dataframe (1)
Python - Explication et résumé de l'utilisation des 24 meilleurs packages
[Python] Erreur de type: résumé des causes et des solutions pour "Aucun type"
Différence entre Ruby et Python en termes de variables
Récapitulatif du traitement de la date en Python (datetime et dateutil)
Comparaison de CoffeeScript avec la grammaire JavaScript, Python et Ruby
Gestion des versions de Node, Ruby et Python avec anyenv
résumé lié à l'opération de fichier python
Résumé des opérations de liste Python3
Python sur Ruby et Ruby en colère sur Python
Mémo tranche python et rubis
Entrée standard / résumé / python, ruby
Syntaxe Ruby et Python ~ branch ~
Installation source et installation de Python
[python] Résumé de la récupération des listes et des éléments du dictionnaire
[Python] Résumé de l'utilisation des fonctions de fractionnement et de jointure
Résumé des différences entre Ruby on rails et Django ~ Bases ~
Construction d'environnement de python et opencv
Différence entre Ruby et Python Split
L'histoire de Python et l'histoire de NaN
[Python] Mémo d'opération de pandas DataFrame
Installer SciPy et matplotlib (Python)
Scraping avec Node, Ruby et Python
Un bref résumé de la collection Python
[python] week1-3: Type de nombre et opération
Ceci et cela des propriétés python
Comparez les boucles de tableau Python et JavaScript
Coexistence de Python2 et 3 avec CircleCI (1.0)
Réputation des livres Python et des livres de référence
[OpenCV; Python] Résumé de la fonction findcontours
J'ai comparé la vitesse de Hash avec Topaz, Ruby et Python
Résolution avec Ruby, Python et numpy AtCoder ABC054 B Calcul de la matrice
Résumé des différences entre Python et PHP (tableau de comparaison des principaux éléments)
Installation du code Visual Studio et installation de python
[Python] Résumé de l'utilisation des pandas
Résumé Python
Différences entre Ruby et Python dans la portée
Python + Selenium Résumé des méthodes d'opération fréquemment utilisées
Extraction de tweet.js (json.loads et eval) (Python)
Python> lien> Initialisation et affectation de tableaux 2D
Résumé de diverses instructions for en Python
Connectez beaucoup de Python ou et et
Résumé Python