我不明白如何重复使用列表。在
代码如下:
brackets = ["(",")"]
char = "abcdefghijklmnopqrstuvwyxz"
chars = list(char)
nums = ["0","1","2","3","4","5","6","7","8","9"]
newstrlist = []
memoryinbracket = []
def unpack(str):
i = 0
liststr = list(str)
while "(" in liststr:
index = liststr.index("(")
counter = 1
i = index + 1
while i <= len(liststr):
item = liststr[i]
if liststr[i] == ")":
counter = counter - 1
if counter > 0:
memoryinbracket.append(item)
else:
break
elif item == "(":
memoryinbracket.append(item)
counter = counter + 1
else :
memoryinbracket.append(item)
i = i+1
unpack(memoryinbracket)
inbracket = newstrlist
e = index
if liststr[i+1] in nums:
nr = int(liststr[i+1])
newl = ''.join(inbracket)
ch = (newl)*(nr-1)
inbracket.append(ch)
liststr.pop(i+1)
while e<=i:
liststr.pop(index)
e = e+1
liststr.insert(index,inbracket)
**del newstrlist[:] ??????
newstrlist = []**
for i in range (len(liststr)):
if liststr[i] in chars:
newstrlist.append(liststr[i])
if liststr[i] in nums:
if liststr[i-1] in chars:
if len(liststr)>i+1 and liststr[i+1] in nums:
nr = int(liststr[i]+liststr[i+1])
ch = liststr[i-1]*(nr-1)
newstrlist.append(ch)
elif liststr[i] == "0":
newstrlist.remove(liststr[i-1])
else:
nr = int(liststr[i])
ch = liststr[i-1]*(nr-1)
newstrlist.append(ch)
i = i+1
i = 0
def test_unpacks():
unpack("a5(c3b)2ew")
unpack("a3bc2")
unpack("a10bc2")
unpack("a(bc)2d")
unpack("a(bc)d")
unpack("(a2)2")
unpack("a(b2c)d")
test_unpacks()
我需要在某个时候清除newstrlist,但是在newstrlist被重新使用之后不能更改。在
注意https://stackoverflow.com/a/850831/47351
复制Koba的答案:
就地清除列表将影响同一列表的所有其他引用。在
例如,此方法不影响其他引用:
但这一个确实:
^{pr2}$您还可以:
你应该写信
否则,您的列表将成为指向同一实际元素的指针,而修改newstrlist将修改infracket。在
相关问题 更多 >
编程相关推荐