Python List comprehension使用条件从列表创建不等长度列表

Hen*_*ton 2 python list-comprehension generator

使用列表推导,itertools或类似函数,是否可以根据条件从列表中创建两个不相等的列表?这是一个例子:

main_list = [6, 3, 4, 0, 9, 1]
part_list = [4, 5, 1, 2, 7]

in_main = []
out_main = []

for p in part_list:
  if p not in main_list:
    out_main.append(p)
  else:
    in_main.append(p)

print out_main
print in_main

>>> [5, 2, 7]
>>> [4, 1]
Run Code Online (Sandbox Code Playgroud)

试图保持简单,但作为使用示例,main_list可以是包含字典键的part_list的字典中的值.需要同时生成两个列表.心连心.

Jak*_*yer 6

只要您没有重复数据,订单无关紧要.

main_set = set([6, 3, 4, 0, 9, 1])
part_set = set([4, 5, 1, 2, 7])

out_main = part_set - main_set
in_main = part_set & main_set
Run Code Online (Sandbox Code Playgroud)

任务完成.

  • 只要订单无关紧要. (3认同)

eum*_*iro 5

如果订单(在part_list中)很重要:

out_main = [p for p in part_list if p not in main_list]
in_main = [p for p in part_list if p in main_list]
Run Code Online (Sandbox Code Playgroud)

除此以外:

out_main = list(set(part_list) - set(main_list))
in_main = list(set(part_list) & set(main_list))
Run Code Online (Sandbox Code Playgroud)