flyps 发表于 2017-5-28 22:04:36

关于python的for循环,如何根据条件实现部分循环?

a =
for i in a :
        if i <3:
                print(i,end=' ')


上面的代码是不完整的。我的想法是:
当i小于3时,开始输出i,直到i是8时,停止输出。然后又当i小于3时,又开始输出i,直到i是又8时,又停止输出。反复如此,直到跌代完整个列表。

按我的想方,上面的输出结果是:23456721461

麻烦解答一下,谢谢!!!

gopythoner 发表于 2017-5-28 22:04:37

我写了个方法,貌似可以做到你要的效果
你自己试试看import re

def func(a):
b = "".join(list(map(str,a)))+"8"
lis = re.findall("(\d*?)8",b)
for each in lis:
    for i in each:
      print(i,end=" ")
      
a =
func(a)
>>>2 3 4 5 6 7 2 1 4 6 1

flyps 发表于 2017-5-28 22:49:22

gopythoner 发表于 2017-5-28 22:30
我写了个方法,貌似可以做到你要的效果
你自己试试看

太感谢你的回复了,不过你的代码我看不明白,部分知道点没有学到到

re是什么模块?

b = "".join(list(map(str,a)))+"8"

lis = re.findall("(\d*?)8",b)

这两行代码,能否大致解说一下,谢谢

gopythoner 发表于 2017-5-28 23:00:21

flyps 发表于 2017-5-28 22:49
太感谢你的回复了,不过你的代码我看不明白,部分知道点没有学到到

re是什么模块?


re 是正则表达式,这个是很基础但是很强大的模块
b = "".join(list(map(str,a)))+"8" 这句是把你给的这个数字组成的列表变成一个字符串,因为我用正则表达式是匹配结尾需要8,所以为了避免最后一段匹配不到,所以我在字符串后面补上一个8
lis = re.findall("(\d*?)8",b) 这个是正则表达式,匹配用的,你学了正则就能懂

flyps 发表于 2017-5-28 23:01:26

gopythoner 发表于 2017-5-28 23:00
re 是正则表达式,这个是很基础但是很强大的模块
b = "".join(list(map(str,a)))+"8" 这句是把你给的这 ...

好的,万分感谢
页: [1]
查看完整版本: 关于python的for循环,如何根据条件实现部分循环?