Ich habe zuvor einen Ruby-Artikel mit dem Titel Vermeiden Sie mehrere Schleifen mit Array # -Produkt veröffentlicht. In diesem Artikel wird Array # product verwendet, um mehrere Schleifen in einzelne Schleifen umzuwandeln [^ 1 ] Einführung in die Methode. Ich habe mich in diesen Tagen persönlich mit Python beschäftigt und versucht herauszufinden, wie man in dieser Sprache schreibt.
python
for year in range(2010, 2013):
for i in range(1, 3):
for char in ('a', 'b', 'c'):
print(year, i, char)
stdout
2010 1 a
2010 1 b
2010 1 c
2010 2 a
2010 2 b
2010 2 c
2011 1 a
2011 1 b
2011 1 c
2011 2 a
2011 2 b
2011 2 c
2012 1 a
2012 1 b
2012 1 c
2012 2 a
2012 2 b
2012 2 c
So finden Sie das kartesische Produkt (direktes Produkt) von itertools.product () in Python sowie das Array # -Produkt in Ruby. Es gibt eine Funktion von.
python
from itertools import product
years = range(2010, 2013)
integers = range(1, 3)
chars = ('a', 'b', 'c')
for year, i, char in product(years, integers, chars):
print(year, i, char)
Eine verschachtelte Einschlussnotation ist ebenfalls verfügbar.
python
years = range(2010, 2013)
integers = range(1, 3)
chars = ('a', 'b', 'c')
combinations = [(year, i, char)
for year in years
for i in integers
for char in chars]
for year, i, char in combinations:
print(year, i, char)
ruby
years = Array(2010..2012)
integers = Array(1..2)
chars = Array('a'..'c')
years.product(integers, chars) { |year, i, char| puts("#{year} #{i} #{char}") }
[^ 1]: Es ist nur eine Darstellung, und es geht darum, die Anzahl der Schleifen-Syntax-Einzüge von mehreren auf eins zu ändern. Es reduziert weder die Anzahl der internen Schleifen noch den Rechenaufwand.
Recommended Posts