【问题标题】:How to modify the value of index while trying to fecth it?如何在尝试获取索引时修改它的值?
【发布时间】:2018-07-10 07:32:48
【问题描述】:

例如有一个名为 Demo_list 的列表。

Demo_list = [4,5,6,7]

如果我给了

Demo_list[0]

我们将得到 4 的值。

但是如果我只给出了 Demo_list[0] 我想得到那个值的平方并且这个列表不应该被修改。

有可能吗?

【问题讨论】:

  • Demo_list[0] ** 2 ?
  • 是的,可以通过多种方式做到这一点。
  • 我已经说过我必须只给出 Demo_list[0] 然后我应该得到它的平方。我不想给出任何像你这样的答案。我只想给Demo_list[0],即;我想覆盖内部函数

标签: python


【解决方案1】:

你可以使用函数

import math
print ( math.pow(demo[0],2)

其中,2 是您想要提高 demo[0] 中值的幂。

编辑(从集合继承,并覆盖抽象列表方法,在您的情况下(getitem),您希望修改)。

import collections class MyList(collections.MutableSequence): def __init__(self, *args): self.list=list() self.extend(list(args)) def __len__(self): return len(self.list) def __getitem__(self,i): return (self.list[i]**2) def __delitem__(self,i): del self.list[i] def __setitem__(self,i,v): self.list[i]=v def insert(self,i,v): self.list.insert(i,v) def __str__(self): return str(self.list)

注意:当您覆盖这些抽象方法时,您需要使用您在此类中声明的类型来定义您的列表。即,

demo_list=MyList(1,2,3,4) demo_list[1]

输出:4

【讨论】:

  • 我已经说过我必须只给出 Demo_list[0] 然后我应该得到它的平方。我不想给出任何像你这样的答案。我只想给Demo_list[0],即;我想覆盖内部函数
  • 请参考上述答案中的编辑部分。
【解决方案2】:
#For complete list
SqrtList = [x**2 for x in Demo_list]
#For single element
Sqrtvariable = Demo_list**2

【讨论】:

  • 先看cmets,剩下的答案你看不懂吗?
【解决方案3】:
demo_list = [4, 6, 7, 8]
for i in range (len(demo_list)):
    j = demo_list[i] * demo_list[i]
    print j

也许你看起来像那样..

【讨论】:

  • 我已经说过我必须只给出 Demo_list[0] 然后我应该得到它的平方。我不想给出任何像你这样的答案。我只想给Demo_list[0],即;我想覆盖内部函数
  • 表示您想将索引值用作正方形,但不应修改索引。我认为这不是一个好主意,因为当您要在不进行操作的情况下访问它的值时,它只会显示什么重视它。
  • 好的,谢谢,但我知道,所以只有我问过关于覆盖内部函数的问题。
【解决方案4】:

是的,有可能。

variable = Demo_list[0]**2

上面的代码不会修改列表。

【讨论】:

  • 我已经说过我必须只给出 Demo_list[0] 然后我应该得到它的平方。我不想给出任何像你这样的答案。我只想给Demo_list[0],即;我想覆盖内部函数
猜你喜欢
  • 1970-01-01
  • 2022-01-21
  • 1970-01-01
  • 1970-01-01
  • 2013-05-21
  • 2020-03-17
  • 1970-01-01
  • 2022-11-07
  • 2018-03-10
相关资源
最近更新 更多