对于xPython中列表中的每个连续或更多的零运行,我想在运行中除了x它们之外全部为零.如果x = 0,则删除全部为零.
我在考虑一个Python函数,它将列表L和数字x作为输入.
例如,让我们L = [7, 0, 12, 0, 0, 2, 0, 0, 0, 27, 10, 0, 0, 0, 0, 8].
x = 0,那么回来L = [7, 12, 2, 27, 10, 8]x = 1,那么回来L = [7, 0, 12, 0, 2, 0, 27, 10, 0, 8]x = 2,那么回来L = [7, 0, 12, 0, 0, 2, 0, 0, 27, …我试图使用一个简单的列表del a[0]来模仿deque.popleft().只想了解delpython的工作原理.例如:
a = [0,1,2,3,4,5]
Run Code Online (Sandbox Code Playgroud)
a在记忆中处于一个连续的空间.在我调用之后del a[0],python会分配新空间并1,2,3,4,5在那里复制,或者它只会给出a一个新地址(与之相同a = a[1:]).
如果它分配新空间,它是否意味着del a[0]是O(len(a))操作?
如果del a[0]是相同的a = a[1:],Python会回收从数组中删除的内存空间吗?
注意:这是在AbstractUser存在之前询问的,这可能是您最近想要使用的.
基本上我想从默认的Django User类中删除默认的电子邮件字段...
class MyUser(User):
field = models.CharField(max_length = 10)
a = 'hello'
def b(self):
print 'world'
del User.email
del MyUser.email
del Myuser.field
Run Code Online (Sandbox Code Playgroud)
所有这些都给出了AttributeError.以下列方式删除方法或属性虽然可以正常工作:
del MyUser.a
del MyUser.b
Run Code Online (Sandbox Code Playgroud)
所以我很好奇为什么这不起作用; 这些模型领域是什么类型的东西?
我尝试的另一件事是通过在MyUser中创建一个email = None覆盖电子邮件,但这也不起作用(并且会稍微丑陋).
提前致谢!
Ps如果你想知道为什么; 它更多的是好奇而不是应用程序真正需要...但我认为不要在数据库中使用未使用的列是好的.Pps我不想更改Django文件以手动从用户删除'email'.
编辑:这里的后续问题(对于那些想要做同样事情的人)在syncdb之前,从标准Django模型中删除字段
我有一个实例,class它在多个lists中显示为一个元素.我想删除该实例,同时将其从每个list元素中删除.这可能吗?
在我的python程序中,我pandas用来读取csv文件并存储在内存中:
data = pandas.read_csv('data.csv')
Run Code Online (Sandbox Code Playgroud)
在运行上面的命令之前,我检查空闲内存,free -m输出是1704.运行上面的命令后输出为729.我跑
del(data)
Run Code Online (Sandbox Code Playgroud)
释放使用的内存data.现在,当我检查空闲内存时,输出1093比原始内存小得多1704.其余的去哪儿了?我怎么能免费呢?我正在运行所有这些ipython,甚至退出ipython也没有释放内存.
谢谢.
我有一个字符串列表['foo1','foo2',...],表示我想从self中删除的变量,如果它们是self的一部分.什么是Pythonic和紧凑的方式来做到这一点?
我的第一次尝试是
if hasattr(self, 'foo1'):
del self.foo1
if hasattr(self, 'foo2'):
del self.foo2
...
Run Code Online (Sandbox Code Playgroud)
但是这显然不适用于大型列表.
有人可以帮忙吗?
我有以下代码:
class Node:
def __init__(self, item):
self.item = item
node1 = Node(12)
cur = node1
Run Code Online (Sandbox Code Playgroud)
是否可以node1使用删除cur?
我试过了,del cur但它没有给出想要的结果,cur现在不再存在,但node1仍然存在。
任何帮助表示赞赏。
假设我有以下课程
class Daddy:
children=[]
def addChild(self,aChild):
self.children.append(aChild)
class Child:
name = ''
def __init__(self, aName):
self.name = aName
aChild = Child('Peter')
aDaddy = Daddy()
aDaddy.addChild(aChild)
print aDaddy.children[0].name
del(aDaddy)
anotherDaddy = Daddy()
print anotherDaddy.children[0].name
Run Code Online (Sandbox Code Playgroud)
Daddy()保持对对象aDaddy的引用,我得到以下输出:
Peter
Peter
Run Code Online (Sandbox Code Playgroud) 我对以下代码的行为感到困惑:
data = [0,1,2,3,4,5]
class test():
def __init__(self,data):
self.data=data
self.data2=data
def main(self):
del self.data2[3]
test_var = test(data)
test_var.main()
print(test_var.data)
print(test_var.data2)
Run Code Online (Sandbox Code Playgroud)
我认为应该出来的是:
[0,1,2,3,4,5]
[0,1,2,4,5]
Run Code Online (Sandbox Code Playgroud)
我得到的是这个:
[0,1,2,4,5]
[0,1,2,4,5]
Run Code Online (Sandbox Code Playgroud)
为什么第二个列表中的元素在未直接更改时会被删除?或者python是否以正常情况发生的方式处理属性?
那么我应该如何改变我得到我想要的代码呢?
我想知道为什么如果我将一个包含多个字符的字符串拆分为一个列表,那么del只有将列表保存到一个新对象中时,函数才起作用?例子:
x = 'Hello world'
del x.split()[0]
print(x)
out: Hello world
Run Code Online (Sandbox Code Playgroud)
y = x.split()
del y[0]
print(y)
out: ['world']
Run Code Online (Sandbox Code Playgroud)