小编Tay*_*nes的帖子

Python列表理解 - 原始列表中的"pop"结果?

假设我在Python 3.X中有一个列表.我使用list comprehension返回该列表的一个子集---是否有一种简单/ Pythonic的方式从原始列表中"弹出"该子集(因此返回后该子集中的元素不再在原始列表中) ?谢谢!

示例(我需要帮助定义my_func):

a = [1, 2, 2, 3, 4, 5]
a, b = my_func(a, *kwargs)
Run Code Online (Sandbox Code Playgroud)

我想要:

a = [1,2,2]
b = [3,4,5]

注意:我不希望一次关闭一个值,而是一次性整个子集."流行"可能不是最好的术语,但我不知道是什么.

我能想到的最好的方法是:

 temp = [idx for idx, val in enumerate(a) if val > 2]  
 b = [a[i] for i in temp]  
 a = [val for idx,val in enumerate(a) if idx not in temp]  
Run Code Online (Sandbox Code Playgroud)

显然,我更喜欢更优雅和高效的东西.我想避免两次超过列表.

编辑:我认为这个问题是独一无二的,因为我不仅仅关心拆分列表 - 我想修改原始列表.拆分并将其中一个拆分分配给原始列表变量是一种可能的解决方案,但我希望可能有一种方法可以在不明确分配给原始列表变量的情况下执行此操作(类似于b.append(a.pop(类似)) )))

python list-comprehension

8
推荐指数
1
解决办法
2912
查看次数

标签 统计

list-comprehension ×1

python ×1