我正在寻找一种基于Python中的条件从元组中完全删除元素的方法。下面是我的代码的一个小节。如果可能的话,我希望解决方案在第三个if子句中完成它的工作,以保持我的主代码的结构。
- 以下是我的代码:**
import ast
data = []
myList=[0,"[('AA', 'BB'), ('CC', 'DD'), ('EE', 'FF'), ('GG', 'HH')]"]
for a in ast.literal_eval(myList[1]):
Value = a[0]
Type = a[1]
if(Type == "BB"):
Value="XX"
if(Type == "DD"):
Value="YY"
if(Type == "FF"):
Value=""
data.append([myList[0], Value])
print(data)
- 当前输出:**
[[0, 'XX'], [0, 'YY'], [0, ''], [0, 'GG']]
- 我需要的:**
[[0, 'XX'], [0, 'YY'], [0, 'GG']]
5条答案
按热度按时间jutyujz01#
一个简单的方法是在第三个条件语句中使用
continue
语句。可以在循环中使用Continue语句跳过循环中剩余代码的执行,并在下一次迭代时将控制返回到循环的开头。在您的情况下:
这意味着如果类型是"FF",则跳过data.append语句,并且不将条目添加到列表中。
vq8itlhq2#
你只需要检查
Value
变量是否保存了任何东西,如果保存了,那么就在列表中添加该项,否则就不添加。因此,当您请求在另一个if条件中实现一个解决方案时,可以执行以下操作:
这里,空白字符串
""
被视为False
,因此如果Value是空白字符串,则不会追加该项。guz6ccqo3#
您可以“过滤”掉追加到最后一个值中的数据。也就是说,如果该数据条目不符合您设置的要求,您可以阻止将其追加到列表中。有几种方法可以实现这一点
1.您可以将其设置为仅追加与条件匹配的值
1.或者你可以使用
continue
跳过循环的最后一部分,这个看起来更好,并且保持代码的一致性。continue
告诉python“跳过所有的东西,直到下一个循环”。两者都应该给予你你正在寻找的结果
wtzytmuj4#
你也可以让你的代码更短,更清晰,更像Python:
4jb9z9bj5#
你可以做任何需要它的列表理解: