Python 如何从for循环的列表中删除元素

Python 如何从for循环的列表中删除元素,python,list,for-loop,del,Python,List,For Loop,Del,有一个列表B=['r',1,'a',2],如果列表中有一个'r',我需要下面的代码,删除1的整数,如果有'a',将其添加到列表B中。在我的代码中,B是[1,2],但它应该是[2] 已删除包含“r”的数组。它只是简单的=='r',因为您已经在元组中了。您可以尝试: b = [('r', 1), ('a', 2)] B=[j for i,j in b if i !='r'] 在这个问题上,b和b之间存在混淆,因为所有变量都是用输入初始化的,所以有点难看出哪个是哪个 这是一种可能性: b=['r',

有一个列表B=['r',1,'a',2],如果列表中有一个'r',我需要下面的代码,删除1的整数,如果有'a',将其添加到列表B中。在我的代码中,B是[1,2],但它应该是[2]

已删除包含“r”的数组。它只是简单的=='r',因为您已经在元组中了。

您可以尝试:

b = [('r', 1), ('a', 2)]
B=[j for i,j in b if i !='r']

在这个问题上,b和b之间存在混淆,因为所有变量都是用输入初始化的,所以有点难看出哪个是哪个

这是一种可能性:

b=['r',1,'a',2] B=[] 对于动作,b中的值: 如果操作=='a': 附加值 elif操作=='r': 尝试: 移除值 除值错误外: 通过 版图 [2]
如果这不是您想要的,请澄清您的问题。

'r'!=[r']。举个例子,你每次输入的内容是什么?我不明白。您正在向B添加元素,但正在从B中删除元素?无论如何,b是一个临时变量,因为在循环的每次迭代中都会用b=input.split覆盖它。因此,从b中删除元素没有效果。您是否打算从B中删除元素?input.split不会返回元组列表,它会返回字符串列表。请说明您提供的输入即a是什么?这些代码都没有任何意义,似乎与您对问题的描述无关。这仍然不起作用,代码还存在其他问题。如果我在列表中添加另一个元素,如B=['r',1,'a',2,'r',3],会出现错误:列表索引超出范围是的,显然它不可操作,因为编写时需要提供上下文。当您将所说的B作为输入传递到B中时,为第一个a输入传递的整数必须与列表B的长度相匹配。如果初始列表为['a',2',r',2],则此答案中的代码将B设置为[2],这可能是OP想要的,也可能不是OP想要的。假设用户输入这些值,则列表为[r,1,a,1,a,1,a,1,r,1,r,2,r,1]。代码应删除第一个1,然后列表为空[],然后添加1,现在列表为[1],接下来添加2,然后列表为[1,2],接下来添加另一个1,然后列表为[1,1,2],然后删除其中一个1,列表为[1,2],等等…我用它和我的问题类似的输入数据方法,我得到了错误:没有足够的值来解包预期的2,得到了1我猜没有足够的值来解包来自于行操作,b中的值:它试图将b的元素解包为对操作,值。这只在b的元素确实是对的情况下起作用。所以我猜您正在使用的列表也包含单个元素。这就是为什么我坚持您应该小心区分b和b。
a = int(input())
B=[]
for i in range(a):
    b = (input().split())    
    if b[i][0]=='r':
       del b[i]
    else:
        B.append( int(b[1]) )
b = [('r', 1), ('a', 2)]
B=[j for i,j in b if i !='r']