英文:
Removing specific elements from a list and appending in Python
问题
I have a list J[0]
. I am removing [1]
from this list and creating J[1]
. Now I wish to append J[0],J[1]
into J
. But I am getting an error. I present the expected output.
J=[]
for t in range(0,2):
J.append([1, 3, 7, 9])
J[1]=J[0][1:]
print("New J:", J[t])
The error is
in <module>
J[0] = [1, 3, 7, 9]
IndexError: list assignment index out of range
The expected output is
[[1, 3, 7, 9],[3, 7, 9]]
英文:
I have a list J[0]
. I am removing [1]
from this list and creating J[1]
. Now I wish to append J[0],J[1]
into J
. But I am getting an error. I present the expected output.
J=[]
for t in range(0,2):
J[0] = [[1, 3, 7, 9]]
J[1]=J.remove([1])
print("New J:", J[t])
The error is
in <module>
J[0] = [[1, 3, 7, 9]]
IndexError: list assignment index out of range
The expected output is
[[1, 3, 7, 9],[3, 7, 9]]
答案1
得分: 1
Here is the translated content:
由于您已经将 J 初始化为空列表,因此无法访问 J[0] 元素,这是IndexError
的原因。您首先必须添加新元素到 J 中才能访问它们。
使您的代码工作的方法如下:
J = list()
l = [1, 3, 7, 9] # 将列表赋值给变量 l
l_removed = l.copy() # 复制 l 以避免操作它
J.append(l) # 将 l 添加到 J
l_removed.remove(1) # 从复制的列表中删除 1
J.append(l_removed) # 将新列表添加到 J
print(J)
这是上述代码块的输出:
[[1, 3, 7, 9], [3, 7, 9]]
英文:
Since you have initialized J to be an empty list, you cannot access the J[0] element and that is the reason for the IndexError
. You first have to append new elements to J in order to access them.
The way to make your code work could be as follows:
J=list()
l = [1, 3, 7, 9] # Assigning list to variable l
l_removed = l.copy() # Making a copy of l in order to avoid manipulating it
J.append(l) # Appending l to J
l_removed.remove(1) # Removing the 1 from the copied list
J.append(l_removed) # Appending the new list to J
print(J)
Here is the output of the above code block:
[[1, 3, 7, 9], [3, 7, 9]]
答案2
得分: 1
I think you are getting confused by the levels of nested lists and by indexes. Eg. You are starting with an empty list J. You assign then a list containing a list to the zeroth entry of that list.
You are trying to remove a list containing 1 from J, whivh is not there.
You are trying to do this two times with the for loop.
I guess what you want, could be something like this:
j = [[1, 3, 7, 9]]
j_new = j[0].copy()
j_new.pop(0)
j.append(j_new)
print(j)
英文:
I think you are getting confused by the levels of nested lists and by indexes. Eg. You are starting with an empty list J. You assign then a list containing a list to the zeroth entry of that list.
You are trying to remove a list containing 1 from J, whivh is not there.
You are trying to do this two times with the for loop.
I guess what you want, could be something like this:
j = [[1, 3, 7, 9]]
j_new = j[0].copy()
j_new.pop(0)
j.append(j_new)
print(j)
答案3
得分: 0
以下是您要翻译的代码部分:
你可以这样做:
J = []
for _ in range(2):
J.append([1, 3, 7, 9])
J[-1].pop(0)
print(J)
**输出:**
[[1, 3, 7, 9], [3, 7, 9]]
**或者:**
而不是删除元素,不要将其放入列表中 - 例如,
J = []
for i in range(2):
J.append([1, 3, 7, 9][i:])
print(J)
英文:
You could do it like this:
J = []
for _ in range(2):
J.append([1, 3, 7, 9])
J[-1].pop(0)
print(J)
Output:
[[1, 3, 7, 9], [3, 7, 9]]
Or:
Rather than deleting the element, don't put it in the list - e.g.,
J = []
for i in range(2):
J.append([1, 3, 7, 9][i:])
print(J)
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论