Оценка вложенного цикла - PullRequest
0 голосов
/ 07 февраля 2020

Я пытаюсь оценить, как это вложенное Для l oop работает. Может кто-нибудь объяснить мне, как значения для i и j увеличиваются и ведут себя с каждой итерацией по отношению к входам x и y? Используя x = 3 и y = 5, как он компилируется?

x,y = map(int,input("Insert two digits to generate a 2-dimensional array: ").split(',')) # applies int to both numbers
lst = [[i*j for j in range(y)] for i in range(x)]  
print(lst)

Вопрос можно найти здесь . Обратите внимание, что этот вопрос не домашнее задание, а мое собственное самостоятельное обучение.

Ответы [ 3 ]

1 голос
/ 07 февраля 2020
lst = [[i*j for j in range(y)] for i in range(x)]  

с x=3 и y=5 можно переписать как:

>>> res = []
>>> for i in range(3):
...     l = []
...     for j in range(5):
...             l.append(i*j)
...     res.append(l)
... 
>>> res
[[0, 0, 0, 0, 0], [0, 1, 2, 3, 4], [0, 2, 4, 6, 8]]

Таким образом, на практике вы создаете 3 списка, и каждый список содержит 5 элементов, заданных произведением i и j.

1 голос
/ 07 февраля 2020

Лучший способ увидеть процесс - это изменить ваш код

lst = [[f'i is {i}, j is {j}' for j in range(y)] for i in range(x)]

, а затем распечатать список, чтобы увидеть итерации.

Для x = 3, y = 5, выше напечатает

[['i is 0, j is 0', 'i is 0, j is 1', 'i is 0, j is 2', 'i is 0, j is 3', 'i is 0, j is 4'], 
['i is 1, j is 0', 'i is 1, j is 1', 'i is 1, j is 2', 'i is 1, j is 3', 'i is 1, j is 4'], 
['i is 2, j is 0', 'i is 2, j is 1', 'i is 2, j is 2', 'i is 2, j is 3', 'i is 2, j is 4']]
0 голосов
/ 07 февраля 2020

Это понимание списка вызовов. Очень полезный метод кодирования python предоставляет нам. Он работает точно так же, как любой другой вложенный l oop. Возможно, эта часть кода поможет вам лучше понять.

lst = [[i * j для j в диапазоне (y)] для i в диапазоне (x)]

x,y = 3,5
list1 = []
list2 = []
for j in range(y):
    for i in range(x):
        list1.append(i*j)
    list2.append(list1)
    list1 = []

print(list2)

Этот код делает то же самое, что и ваш код: x = 3, y = 5.

ВЫХОД:

[[0, 0, 0], [0, 1, 2] , [0, 2, 4], [0, 3, 6], [0, 4, 8]]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...