繁体   English   中英

如何检查列表元素是否存在于python数组中

[英]How to check if list element is present in array in python

我有一个清单

bulk_order
Out[230]: 
[3    523
Name: order_id, dtype: object]

我有一个数组。 它是一个系列,但是我正在用values访问它

clusters_order_ids.values
Out[231]: 
array([['520', '521', '524', '527', '532'], ['528'], ['531'],
   ['525', '526', '533'], ['519', '523', '529', '534', '535'], ['530']],     
dtype=object)

现在,我要检查list element 523是否在上面的数组中,如果要删除,则要删除它。

我正在python中跟随

bulk_order in clusters_order_ids.values

但这给了我False输出

尝试一下(从在Python中的列表列表之外制作平面列表 ):

l = clusters_order_ids.values
out = [item for sublist in l for item in sublist]
print (bulk_order in out)

对于删除,您必须在每个列表上输入以下内容:

for sublist in clusters_order_ids.values:
    if bulk_order in sublist:
        sublist.remove(bulk_order)
        if not sublist:
            #do something to remove the empty list
        break;

您的列表不是列表,而是列表列表。

如果要删除列表['523']中包含某些内容的整个列表,请执行以下操作:

orders = [['520', '521', '524', '527', '532'], ['528'], ['531'], ['525', '526', '533'], ['519', '523', '529', '534', '535'], ['530']]
remove_order_with_ids = ['523'] # or bulk_order 
orders = [order for order in orders if not set(remove_order_with_ids).intersection(set(order))]
print orders
# [['520', '521', '524', '527', '532'], ['528'], ['531'], ['525', '526', '533'], ['530']]

如果您只想从内部列表中删除['523']中的项目,请执行以下操作:

orders = [['520', '521', '524', '527', '532'], ['528'], ['531'], ['525', '526', '533'], ['519', '523', '529', '534', '535'], ['530']]
remove_order_with_id = ['523'] # or bulk_order 
new_orders = []
for order in orders:
    new_orders.append([item for item in order if item not in remove_order_with_id])
print new_orders
# [['520', '521', '524', '527', '532'], ['528'], ['531'], ['525', '526', '533'], ['519', '529', '534', '535'], ['530']]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM