一、内置函数如何使用

help()一下:

如想看min()咋用?在shell中:help(min)

 

二、部分内置函数

(一).排序:sorted()

li = [(1, 2, 3, 4), (7, 8, 1, 4), (3, 4, 6, 2), (6, 5, 9, 2)]
print(sorted(li, key=lambda a: a[1]))
# lambda a: a[1] 以元组的第二个值作为排序依据。
# 运行结果:[(1, 2, 3, 4), (3, 4, 6, 2), (6, 5, 9, 2), (7, 8, 1, 4)]

sorted()是python3的内置函数,返回一个新列表,不改变原来的数据,如要改变需赋值。

sort()是列表的函数:list.sort(),没有返回值,直接在原数据上进行修改。

(二).枚举:enumerate()

enumerate 是个迭代器。

如要查看枚举中的内容,可用 list(enumerate[1,2,3]) 来查看。

print(list(enumerate([1, 2, 3])))
# 运行结果:[(0, 1), (1, 2), (2, 3)]

# 可指定索引的开始值:
print(list(enumerate([1, 2, 3], 2)))
# 运行结果:[(2, 1), (3, 2), (4, 3)]

# 转换为一个字典:(这里同样指定了索引的开始值)
print(dict(enumerate([1, 2, 3], 2)))
# 运行结果:{2: 1, 3: 2, 4: 3}

(三).过滤器:filter(function or None,iterable)

字面意思理解一下,过滤、过滤,就是过滤掉自己不想要的那部分内容。

第一个参数需要放一个函数体,或者写"None",因为是必备参数。

# 提取一个列表中,出大于2的元素
print(list(filter(lambda x: x > 2, [1, 2, 3, 4, 5])))
# 运行结果:[3, 4, 5]

把符合条件的都提取出来。但是,iterable对象中,如果有:空序列、False、0,也会被去除。

(四).配对:zip(iterable1,iterable2,...)

# iterable 中的值 一一匹对  1 vs 1
print(list(zip([1, 2, 3], ["a", "b", "c"], [10, 20, 30])))
# 运行结果:[(1, 'a', 10), (2, 'b', 20), (3, 'c', 30)]
# 既然是一一对应,那么少了其中任何一个都不会再去匹对了

# 少了第二个 iterable 中的 "b"
print(list(zip([1, 2, 3], ["a", "c"], [10, 20, 30])))
# 运行结果:[(1, 'a', 10), (2, 'c', 20)]

# 少了第一个 iterable 中的 2 和 第三个 iterable 中的 10
print(list(zip([1, 3], ["a", "b", "c"], [20, 30])))
# 运行结果:[(1, 'a', 20), (3, 'b', 30)]
# 同时遍历两个或更多的序列,可以使用 zip() 组合
questions = ["what's your name", "how old", "favorite color"]
answers = ["quanquan616", 30, "blue"]
for i, j in zip(questions, answers):
    print("{}? {}".format(i, j))

"""
运行结果:
what's your name? quanquan616
how old? 30
favorite color? blue
"""

(五).加工:map(func,*iterable)

func是指定一个函数体,指定以什么方式去加工。

*iterable "*"是什么?前面的内容有提到过,解包了。

print(list(map(str, [1, 2, 3])))
# 远行结果:['1', '2', '3']

此例中,str是指定了加工的方式。

list()是用来查看map()对象中的元素,tuple也可以。

 

三、作用域(全局、局部变量)

全局变量定义在函数体外,可以访问,但不可以修改。

(一).global 用途:

(1)、如果要修改函数体外定义的全局变量,需要在对应变量名前加"global"关键字来修饰。(类似授权的概念)

(2)、函数体中的局部变量,如果要在函数体外访问到它,也需要在前加"global"

# --- global 第一种用法 --- #
n = 1 # 这里是全局变量
def fun():
    n += 1
    print(n)
fun()
# 运行直接报错!
# UnboundLocalError: local variable 'n' referenced before assignment
# 大意:n 是局部变量,未定义,无法使用
# 需要在 n 前加上 global

n = 1
def fun():
    global n
    # 不能写成:global n += 1 会报语法错误!
    n += 1
    print(n)
fun()

# 还有一种情况:
n = 1  # 这里是全局变量
def fun(a, b):
    n = a + b  # n 在这里是局部变量
    print(n)
fun(10, 20)
print(n)

# 运行结果:30 1
View Code

相关文章: