簡體   English   中英

在python中使用兩個for循環

[英]using two for loops in python

我最近開始學習python,並且有一個關於for循環的問題,我希望有人可以回答。 我希望能夠打印從1到10的兩個數字的所有可能乘積。 所以:2乘2、2乘3、2乘4 ... 2乘10、3乘2、3乘3 ... 3乘10、4乘2、4乘3等...我會以為最簡單的方法是使用兩個for循環,但我不確定。 誰能告訴我這是怎么做的。

這是另一種方式

a = [i*j for i in xrange(1,11) for j in xrange(i,11)]

請注意,我們需要從“ i”而不是1開始第二個迭代器,因此這是雙重效率的

編輯:證明它與簡單解決方案相同

b = []
for i in range(1,11):
    for j in range(1,11):
        b.append(i*j)

print set(a) == set(b)

僅出於一種樂趣(和itertools上癮的SO讀者),而僅使用一個for循環:

from itertools import product
for i,j in product(xrange(1,11), xrange(1,11)):
    print i*j

編輯:使用漢克·蓋伊建議的xrange

for i in range(1, 11):
    for j in range(1, 11):
        print i * j

您可能不需要嵌套的for-loop解決方案。
具有列表理解的單循環(如下所示)就足夠了:

r_list  = list(range(2, 11))   
output  = []
for m in r_list:
    tmp = [m*z for z in r_list]
    output.append(tmp)

print(output)

或更簡單:

output  = []
for m in list(range(2, 11)):
    tmp = [m*z for z in list(range(2, 11))]
    output.append(tmp)

print(output)

印刷品:

    [
        [4, 6, 8, 10, 12, 14, 16, 18, 20], 
        [6, 9, 12, 15, 18, 21, 24, 27, 30], 
        [8, 12, 16, 20, 24, 28, 32, 36, 40], 
        [10, 15, 20, 25, 30, 35, 40, 45, 50], 
        [12, 18, 24, 30, 36, 42, 48, 54, 60], 
        [14, 21, 28, 35, 42, 49, 56, 63, 70], 
        [16, 24, 32, 40, 48, 56, 64, 72, 80], 
        [18, 27, 36, 45, 54, 63, 72, 81, 90], 
        [20, 30, 40, 50, 60, 70, 80, 90, 100]
    ]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM