python中的列表和元组_Python中的列表和元组有什么区别?

列表是可变序列,有许多方法(包括变异和非变异方法),最常用作通用容器(它们的项目可以是任何类型的对象,尽管它有时被认为是更好的列表样式具有相同类型或类型的项目等效使用).

元组是不可变的序列,只有很少的方法(所有非变异的特殊元素),当你需要不变性以便将容器用作集合中的项目或字典中的键时(通过项目),最常使用这些方法也必须是不可变的 – 例如字符串,数字或其他嵌套元组,为此起作用).他们的项目可以是任何类型的对象,元组拥有许多不同类型的项目是完全正常的.

在少数几种情况下,元组或列表也可以发挥作用,在少数情况下,元组更小,构建速度更快的事实可以用来影响有利于元组的决策.例如,当函数需要返回多个结果时,使用它是最正常的

return fee, fie, foo, fum

即返回一个包含有问题的四个项目的元组,而不是

return [fee, fie, foo, fum]

也就是说,返回一个包含四个项目的列表 – 除了(小的收益)性能,“返回一个元组”常用的习惯用法也处理通常返回的多个结果不是相同或不可互换的类型的问题,因此,从风格上讲,无论如何,使用列表可能被认为是一个更可疑的选择.

元组的一个有用变体是它的子类型collections.namedtuple(需要Python 2.6或更高版本),它允许您按名称(使用属性语法)和索引(正常方式)访问项目.例如,如果导入集合位于模块顶部,则上述return语句可能会变为……

freturn = collections.namedtuple('freturn', 'fee fie foo fum')

def f():

...

return freturn(fee, fie, foo, fum)

现在,f()的调用者可以像以前一样使用它的返回值作为元组,但是会得到很好的替代品,例如…:

r = f()

print r.fie

代替不那么立即清晰可读

print r[1]

值得注意的是,与直接使用元组相比,使用collections.namedtuple创建的命名元组子类基本上没有额外开销,或者,正如文档所说,

they are lightweight and require no more memory than regular tuples.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值