辛荑啊 发表于 2020-10-21 20:42:44

关于python的for循环

有一点关系for循环的小问题,今天看了第20讲的课后作业确实更加迷惑了
代码:
str1 = '''拷贝过来的字符串'''
list1 = []

for each in str1:
    if each not in list1:
      if each == '\n':
            print('\\n', str1.count(each))
      else:
            print(each, str1.count(each))
      list1.append(each)


假设str1=%%!!,我现在最迷惑的就是这个for each in str1:,我想知道这个for循环是:
1.(一次性将str1的所有元素都找出来,然后一起进入下面的if)
2.(先找出%,然后进入if,完成后返回for,再找出第二个%再次进行if)
如果是2的话,第一次%进入list1后,返回for循环再使用第二个%,那么此时list1中不是已经有%了吗?那还怎么进行下面的if呢
如果是1的话,那么list1应该会包含所有的str1中元素啊
求大佬解惑,这个问题困扰了好久了

辛荑啊 发表于 2020-10-21 20:55:35

我刚才试了一下,好像有一点明白,应该是我理解的第二种,具体是如何实现后面的计数操作,我一直以为输出一个str中的元素,然后对其进行一次计数,后面发现理解错了,应该是输出一个str中的数,然后根据这个数在整个str中进行count(),所以不会重复添加元素
感觉突然豁然开朗了,害
蹲个大佬看看我理解的是不是对的{:5_109:}

昨非 发表于 2020-10-21 21:01:53

辛荑啊 发表于 2020-10-21 20:55
我刚才试了一下,好像有一点明白,应该是我理解的第二种,具体是如何实现后面的计数操作,我一直以为输出一 ...

你忽略了最前面的前提条件
if each not in list1:

昨非 发表于 2020-10-21 21:03:17

也就是只有遇到新的字符,才能进入判断并执行count(其实是一个更新统计结果的过程)

笨鸟学飞 发表于 2020-10-21 22:28:19

例如:
for i in :#运行过程可以理解为,第1次循环:1、i=0======第2次循环:1、i=1
   print(i)                #2、打印0======第2次循环:打印1
页: [1]
查看完整版本: 关于python的for循环