当前位置: 首页 > 后端技术 > Python

Python选择列表还是元组的思考

时间:2023-03-26 13:41:46 Python

list和tuple最大的区别是:前者是可变对象,后者是不可变对象,可变和不可变带来的内存差异:list为了扩容会申请更多的内存,所以内存占用列表也将高于元组。有很多元组。(用多少元组来申请)除了上面众所周知的区别,还有一个区别:typinghint现在写python代码不打hint太过分了!先说结论吧。如果元素的类型相同,则使用列表。如果元素的类型不同,用tuple举例:defhandle(user_id:int)->tuple[bool,str]:ifuser_id==0:returnFalse,'没有这样的用户'else:returnTrue,'有这样一个用户'exist,message=handle(0)如上面的函数,返回的第一个元素是bool类型,第二个元素是string这种情况下,可以用元组来描述返回的元组。如果返回的元组是固定长度的,不能在一个条件下返回len是2,在另一个条件下返回的len是3。把光标放在exist上,ide会智能告诉你类型是bool。将光标放在消息上,ide会智能告诉你类型是str。如果你使用列表,你能做到吗?看不到如果你使用listdefhandle(user_id:int)->list[bool,str]会发生什么:ifuser_id==0:returnFalse,'thereisnosuchuser'else:returnTrue,'there这样一个用户是否存在,message=handle(0)如果我们此时将返回类型从tuple[bool,str]改为list[bool,str],exist的提示还是bool类型,但是有一个message的问题,message应该是str类型,但是ide的提示是bool类型写法不一样,把list[bool,str]改成list[bool|会怎样?海峡]?def句柄(使用r_id:int)->列表[bool|str]:ifuser_id==0:returnFalse,'没有这样的用户'else:returnTrue,'有这样的用户'exists,message=handle(0)结果当然更糟bothexistandmessage成为布尔|海峡