python——for循环应用和函数

前言:本文为小编自主学习python的过程中的笔记和对应的练习应用 ,希望能帮助到大家,也希望大家能一起交流学习。

目录

一、for循环----迭代

1.迭代字典

2.一些迭代工具

3.反向迭代和排列后再迭代

4.简单推导

二、pass、del和exec

三、函数

1.定义函数

2.位置参数

3.默认参数

4.收集参数

5.作用域

6.内置函数的查看


一、for循环----迭代

1.迭代字典

要遍历字典的所有关键字,可像遍历序列那样使用普通的for语句,如:

d = {"x":1,"y":2,"z":3}
for key in d:
    print(key,"对应的值是",d[key])

也可以使用keys等字典方法来获取所有的键。如果只对值感兴趣,可用d.values。也可以用d.items以元组的方式返回键-值对。for循环的优点之一是,可在其中使用序列解包。如:

d = {"x":1,"y":2,"z":3}
for key,value in d.items():
    print(key,"对应的值是",value)

2.一些迭代工具

  • zip函数:可将两个序列“缝合”起来,并返回一个由元组组成的序列。返回值是一个适合迭代的对象,要查看其内容,可用list将其转换为列表。且“缝合”后可在循环中将元组解包。如:
a = ['a','b','c']
b = [1,2,3]
c = list(zip(a,b))
print(c)
for a,b in zip(a,b):
    print(a,"对应",b)
  • 迭代时获取索引

例如你想替换一个字符串列表中所有包含子串'xxx'的字符串

strings = ["mane","2xxx","da"]
index = 0
for string in strings:
    if 'xxx' in string:
        strings[index] = '[censored]'
    index +=1
print(strings)

当然也有另外的方法,那就是使用内置函数enumerate

strings = ["mane","xxx","da"]
for index,string in enumerate(strings):
    if 'xxx' in string:
        strings[index] = '[censored]'
print(strings)

这个函数让你能够迭代索引-值对,其中的索引是自动提供的。

3.反向迭代和排列后再迭代

函数:reversed和sorted。它们类似于列表方法reverse和sort,但可用于任何序列或可迭代的对象,且不就地修改对象,而是返回反转和排序后的版本。

print(sorted([4,3,6,8,3]))
print(sorted('hello,world!'))
print(list(reversed('hello,world')))
print(''.join(reversed('hello,world')))

注意:sorted返回一个列表,而reversed像zip那样返回一个更神秘的可迭代对象,只管在for循环或join等方法中使用它,不会有任何问题。只是不能对它执行索引或切片操作,也不能直接对它调用列表方法。要执行这些操作,可先使用list对返回的对象进行转换。

4.简单推导

  列表推导是一种从其他列表创建列表的方式,类似于数学中的集合推导。列表推导的工作原
理非常简单,有点类似于for循环。如:
a = [x * x for x in range(10)]
print(a)
# [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
这个列表由 range(10) 内每个值的平方组成,如果只想打印那些能被3整除的平方值,可在列表推导中添加一条if语句。
a = [x*x for x in range(10) if x%3 == 0]
print(a)
# [0, 9, 36, 81]

注:这里选择用x%3==0而不直接用(x*x)%3==0是因为仅当x能被3整除时,x*x才能被3整除,因此我们可以讲代码简化

我们还可添加更多的 for 部分。例如:
print([(x, y) for x in range(3) for y in range(3)])
# [(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)])

作为对比,下面的两个for循环可创建同样的列表 :

result = []
for x in range(3):
    for y in range(3):
        result.append((x, y))
print(result)

二、passdelexec

  • pass

在你编写代码时,可将其用作占位符。例如,你可能编写了一条 if 语句并想尝试运行它,但其中缺少一个代码块,而导致这些代码不能运行,这是因为在Python中代码块不能为空。要修复这个问题,只需在中间的代码块中添加一条pass语句即可。

a = input("请输入1或2:")
if a == '1':
    print('1')
elif a == '2':
    pass

在这里就是当你输入1就会打印1,当你输入2则什么都没有发生。

  • del
使用del语句。不仅会删除到对象的引用,还会删除名称本身。
x = ["Hello", "world"]
y = x
y[1] = "Python"
del x
print(y)
print(x)
注意:在这里x和 y虽然 指向同一个列表,但删除 x y 没有任何影响,因为只是删除名称 x ,而 没有删除列表本身(值)。事实上,在Python 中,根本就没有办法删除值,而且你也不需要这样做,因为对于你不再使用的值,Python 解释器会立即将其删除。
  • exec

函数 exec 用于将字符串作为 Python 程序执行。如:
exec("print('Hello, world!')")
eval是一个类似于 exec 的内置函数。 exec 执行一系列 Python 语句,而 eval 计算用字符串表示
Python 表达式的值,并返回结果( exec 什么都不返回,因为它本身是条语句)。例如,你可使
用如下代码来创建一个 Python 计算器:
a = eval(input("Enter an arithmetic expression: "))
print(a)

三、函数

1.定义函数

def用于定义函数,语法格式:def 函数名(): 

也可以用:函数名 = lambda 参数:返回值 来定义函数 

如编写一个函数,返回一个由斐波那契数组成的列表,且可以自己选择列表中值的个数

def fibs(num):
    result = [0, 1]
    for i in range(num-2):
        result.append(result[-2] + result[-1])
    return result
print(fibs(10))

2.位置参数

def 函数名(形参):

在调用函数时需要在对应的形参位置写上你调用时的实际参数,你在定义的时候给了几个参数,那么你在调用的时候就给几个,调用的时候按照参数位置顺序依次赋予值,位置一一对应。如:

def reduce(a,b):
    print(a-b) 

reduce(3,4) #-1

3.默认参数

你可以为某个参数指定一个默认值,你如果调用的时候不给值就会使用默认值 ;如果调用的时候传了参数,那么这个参数就会覆盖掉默认值 

def reduce(a,b=10):
    print(a-b) 

reduce(10,20) # -10
reduce(10) # 0

4.收集参数

*args  参数前面的星号将提供的所有值都放在一个元组中,也就是将这些值收集起来 

def reduce(*args):  # args就是一个形参
    print(args)

reduce(1,2,3,4,5)
与赋值时一样,带星号的参数也可放在其他位置(而不是最后),但不同的是,在这种情况
下你需要做些额外的工作:使用名称来指定后续参数。如:
def fun(x, *y, z):
    print(x, y, z)  
fun(1, 2, 3, 4, 5, z=7)

当你要收集关键字参数时,可使用两个星号。如:

def reduce(**kwargs): 
    print(kwargs)
reduce(a=1,b=2,c=3) # 键和值

这时得到的是一个字典而不是元组

5.作用域

在函数内使用的变量称为局部变量(与之相对的是全局变量)。参数类似于局部变量,因此参数与全局变量同名不会有任何问题。如:

x = 1
def fun():
    x = 1 
    x = x + 1 
    print(x)
fun()
print(x)
在函数内部给变量赋值时,该变量默认为局部变量,除非你明确地告诉Python它是全局变量
函数global:用于声明全局变量,重新关联全局变量(使其指向新值)。如:
x = 1
def change_global():
    global x
    x = x + 1 
change_global()
print(x)

6.内置函数的查看

import builtins
print(dir(builtins)) # 查看你当前内置函数
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值