python基础函数&用法&报错

本文介绍了Python的zip函数用于打包可迭代对象,返回元组的迭代器,当参数长度不等时,以最短为准。同时展示了如何使用zip同时遍历多个字典和对元素排序。还讨论了eval函数执行字符串表达式以及如何处理UnboundLocalError,强调在内部函数中使用全局变量需用global关键字声明。
摘要由CSDN通过智能技术生成

1.zip函数

对两个可迭代对象同一位置打包,返回为tuple。(a[1], b[1]),..., (a[i], b[i])...

>>> a = ['a', 'b', 'c', 'd']
>>> b = ['1', '2', '3', '4']
>>> list(zip(a, b))
[('a', '1'), ('b', '2'), ('c', '3'), ('d', '4')]

# python3中返回为tuple的迭代器,需用list转换其为列表

如果几个参数不等长,取最短的那个参数的长度,舍弃超出最短长度的成员。

解包:zip(*)

result = zip(a, b)
origin = zip(*result)  #*:解包运算符

用法:

同时遍历多个字典

>>> dict_one = {'name': 'John', 'last_name': 'Doe', 'job': 'Python Consultant'}
>>> dict_two = {'name': 'Jane', 'last_name': 'Doe', 'job': 'Community Manager'}
>>> for (k1, v1), (k2, v2) in zip(dict_one.items(), dict_two.items()):
...     print(k1, '->', v1)
...     print(k2, '->', v2)
...
name -> John
name -> Jane
last_name -> Doe
last_name -> Doe
job -> Python Consultant
job -> Community Manager

对多个元素排序:

names = ['John', 'Amy', 'Jack']
scores = [98, 100, 85]  # 分数和名字是一一对应的

data = list(zip(names, scores))
data.sort() # 以names进行排序

# [('Amy', 100), ('Jack', 85), ('John', 98)]

data2 = list(zip(scores, names))
data2.sort()# 以scores进行排序

# [(85, 'Jack'), (98, 'John'), (100, 'Amy')]

2.python eval函数

eval() 函数用来执行一个字符串表达式,并返回表达式的值。

a = 'x + x + 5'
x = 5
eval(a) # 25 将字符串变为表达式

3. UnboundLocalError

这种错误的原因在于在内部定义了外部变量。

解决办法:在内部变量前加上global 

number = 5
def add():
    number+=3
    return number

add()

# UnboundLocalError: local variable 'number' referenced before assignment
number = 5
def add():
    global number
    number+=3
    return number

add()

# 8

在内部定义global变量后,内部函数都无需设置return了 

number = 5
def add():
    global number
    number+=3

print(number)    
add()
print(number)

# 5
# 8

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值