0
list_1=[7,8,9,1,2,4]
list_2=[1,2,4]

for i in list_1:
   for j in list_2:
       if i>j:
         print(i)

主要问题我不明白输出

7
7
7
8
8
8
9
9
9
2
4
4

为什么有3次(7,8,9)2次(4,4)..我是初学者的逻辑是什么..

4

2 回答 2

1

了解循环

  1. 当您执行时,for i in list_1意味着 i 遍历list_1( 7, 8, 9, 1, 2, 4) 中的所有项目。
  2. 当执行到达 时for j in list_2j迭代list_2( 1, 2, 4)。
  3. 现在if i > j代码意味着如果该值i大于 all j,则打印该值 in i

工作流程


i开始迭代时,也j开始迭代。并且在完成迭代i之前不会继续到下一个元素。j

i7,是指if 7 is greater than 1, 2, and 4那么print 7

So7将被打印 3 次,因为7 > 1,7 > 27 > 4.

然后i继续到下一个元素,在这种情况下是8(下一个索引list_1)。

它将被打印 3 次,因为8 > 1, 8 > 2, 8 > 4.


现在说i已经达到数2。为什么它只打印一次?因为在这种情况下2只大于。1

于 2021-03-09T03:23:17.783 回答
1

你有一个嵌套循环。第一个循环遍历list_1items [7,8,9,1,2,4]。第二个循环遍历list_2项目[1,2,4]

对于 的每次迭代list_1,您都在检查 中的值list_1是否大于 中的值list_2。所以代码的工作方式如下:

外循环:i = 7,遍历内循环值

if 7 > 1  #this is True - so print 7

if 7 > 2  #this is True - so print 7

if 7 > 4  #this is True - so print 7

外循环:i = 8,遍历内循环值

if 8 > 1  #this is True - so print 8

if 8 > 2  #this is True - so print 8

if 8 > 4  #this is True - so print 8

外循环:i = 9,遍历内循环值

if 9 > 1  #this is True - so print 9

if 9 > 2  #this is True - so print 9

if 9 > 4  #this is True - so print 9

外循环:i = 1,遍历内循环值

if 1 > 1  #this is False - so nothing is printed

if 1 > 2  #this is False - so nothing is printed

if 1 > 4  #this is False - so nothing is printed

外循环:i = 2,遍历内循环值

if 2 > 1  #this is True  - so print 2

if 1 > 2  #this is False - so nothing is printed

if 1 > 4  #this is False - so nothing is printed

外循环:i = 4,遍历内循环值

if 4 > 1  #this is True  - so print 4

if 4 > 2  #this is True  - so print 4

if 1 > 4  #this is False - so nothing is printed

这会产生你得到的输出。

于 2021-03-09T03:01:45.680 回答