python元组元素可以修改吗_是否可以修改元组列表中的每个第一个元组元素?

But is there a other way to do this? without iterating over the whole list?

不。不需要遍历整个列表。在

由于您希望检查每个元组,以查看您希望更改的元素是否是某个数字,因此必须以某种方式遍历整个列表。所以剩下的唯一考虑就是如何去做。在

有很好的、经过时间检验和行业标准的指导方针可以帮助您决定如何编写代码:在编写代码时,您应该优先考虑代码的可读性。代码效率是一个遥远的秒。这条规则也有例外,但它们在这里并不相关。在

看看你的原始代码。它假设item是list,因此我也将:for item in myList:

if item[0] == 1:

item[0] = 3

现在对比一下阿什维尼的建议:

^{pr2}$

现在问问你自己:哪一个最容易阅读和理解?我认为答案是显而易见的。在

哪个更有效?在

让我们看看效率:您的原始代码:对于myList中的每个项目,执行一个列表查找,然后可能执行一个列表分配,这两个操作都非常快速。

Ashwinis代码:重建整个结构。对于myList中的每个项目,python需要创建3个新列表(如果您想更改不是第一个的项目,则需要创建5个)。Python必须为每个列表分配新内存,并对大量旧列表进行垃圾收集,这两种操作都相当缓慢。都是为了把它塞进一行。

请使用原始代码。原因如下:这是很明显的方法。在

这是Python的方法。在

这是最具可读性的方法。在

这是最有效的方法。在

这意味着这是正确的方法。在

如果您想要一个一行程序,请将其设为一个函数:def conditional_sublist_assign(myList, index, from, to):

"""

For each `item` in `myList`, set `item[index] = to` if `item[index] == from`.

"""

for item in myList:

if item[index] == from:

item[index] = to

# Here's your one-liner:

conditional_sublist_assign(myList, 0, 1, 3)

为了使我的论点更有说服力,以下是The Zen of Python中的一些相关行:美总比丑好。在

简单总比复杂好。在

可读性很重要。在

应该有一种——最好只有一种——显而易见的方法。在

如果实现很难解释,这是个坏主意。在

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值