python中流程控制

for 语句

python中的 for 语句依据任意序列(链表或字符串)中的子项,按它们在序列中的顺序来进行迭代

在python中如果在迭代过程中修改迭代序列,这是不安全的(只有在使用链表这样的可变序列时才会有这样的情况)

我们可以迭代它的副本,然后修改它的数据

words=["liu","ming","zhe"]
for w in words[:]:
    if w=="liu":
        words.insert(0,w)
print(words)

使用for循环获得一个列表,该列表就是for循环的迭代序列


# 这句话是使用x来作为列表的元素,然后x的值是从for循环中获取的
list1=[x for x in range(10)]

print(list1)

 

range()函数

range(10)是生成了一个包含十个值的链表

不同方面 range() 函数返回的对象表现为它是一个列表,但事实上它并不是。当你迭代它时,它是一个能够像期望的序列返回连续项的对象;但为了节省空间,它并不真正构造列表。

# 使用range来得到一个从1开始步长为2,到10结束的列表
print(list(range(1,10,2))

获得迭代索引我们可以使用range()和len()

a=["阿花","阿强","阿明","阿三","阿帅"]
# 获取迭代序列
i=0
for x in range(len(a)):
    print(i,x)
    i+=1

更加简便的方式是使用enumerate()

a=["阿花","阿强","阿明","阿三","阿帅"]
# enumerate的返回值不是一个列表而是一个可迭代的对象,我们需要使用list方法来将其转换为一个列表
print(list(enumerate(a,1)))

break,continue和循环中的else

for i in range(10):
    if i==5:
        print("即将跳出循环")
   # 如果没有break则在循环结束后会执行else语句
        break
    if i==2:
        print("")
        continue
    print('这是{0}'.format(i))
else:
    print("循环执行完成")

函数

def fib(num):
    a=0
    b=1
    list1=[]
    for i in range(num):
        list1.append(a)
# append速度比较快,在给链表添加数据时我们推荐使用
        c=b
        b=a+b
        a=c
    return list1

# 返回的是一个可迭代对象

def fab(max):
    n, a, b = 0, 0, 1
    while n < max:
        yield b
        # print b
        a, b = b, a + b
        n = n + 1
print(list(fab(9)))

        

深入函数定义

  1. 默认参数值,
# 该函数在调用时可以用ask_ok("haha")或者是ask_ok("y",2)或者是ask_ok("y",5,"hello")
def ask_ok(ask,time=4,replay="what you say?"):
    for i in range(4):
        if ask==None:
            ask=input("请说话:")
        if ask=='y':
            print("yes")
            break
        ask=Null



# 默认值在函数定义作用域被解析
i =5
def func(arg=i):
    print(arg)

i=6
func()# 输出为5

# 默认值只在函数定义的时候被解析一次,在调用的时候不会每次都取默认值

def func(a,arg=[]):
    arg.apprend(a)
    print(arg)

func(1)# 输出[1]
func(2)# 输出[1,2]
func(3)# 输出[1,2,3]



    

2.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值