前言:本文为小编自主学习python的过程中的笔记和对应的练习应用 ,希望能帮助到大家,也希望大家能一起交流学习。
目录
一、for循环----迭代
1.迭代字典
2.一些迭代工具
3.反向迭代和排列后再迭代
4.简单推导
二、pass、del和exec
三、函数
1.定义函数
2.位置参数
3.默认参数
4.收集参数
5.作用域
6.内置函数的查看
要遍历字典的所有关键字,可像遍历序列那样使用普通的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)
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)
这个函数让你能够迭代索引-值对,其中的索引是自动提供的。
函数: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对返回的对象进行转换。
a = [x * x for x in range(10)]
print(a)
# [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
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整除,因此我们可以讲代码简化
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)
在你编写代码时,可将其用作占位符。例如,你可能编写了一条 if 语句并想尝试运行它,但其中缺少一个代码块,而导致这些代码不能运行,这是因为在Python中代码块不能为空。要修复这个问题,只需在中间的代码块中添加一条pass语句即可。
a = input("请输入1或2:")
if a == '1':
print('1')
elif a == '2':
pass
在这里就是当你输入1就会打印1,当你输入2则什么都没有发生。
x = ["Hello", "world"]
y = x
y[1] = "Python"
del x
print(y)
print(x)
exec("print('Hello, world!')")
a = eval(input("Enter an arithmetic expression: "))
print(a)
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))
def 函数名(形参):
在调用函数时需要在对应的形参位置写上你调用时的实际参数,你在定义的时候给了几个参数,那么你在调用的时候就给几个,调用的时候按照参数位置顺序依次赋予值,位置一一对应。如:
def reduce(a,b):
print(a-b)
reduce(3,4) #-1
你可以为某个参数指定一个默认值,你如果调用的时候不给值就会使用默认值 ;如果调用的时候传了参数,那么这个参数就会覆盖掉默认值
def reduce(a,b=10):
print(a-b)
reduce(10,20) # -10
reduce(10) # 0
*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) # 键和值
这时得到的是一个字典而不是元组
在函数内使用的变量称为局部变量(与之相对的是全局变量)。参数类似于局部变量,因此参数与全局变量同名不会有任何问题。如:
x = 1
def fun():
x = 1
x = x + 1
print(x)
fun()
print(x)
x = 1
def change_global():
global x
x = x + 1
change_global()
print(x)
import builtins
print(dir(builtins)) # 查看你当前内置函数