【发布时间】:2011-01-09 16:35:18
【问题描述】:
我在 python 中有一个列表,我想遍历它,并有选择地构造一个包含除当前第 k 个元素之外的所有元素的列表。我可以这样做的一种方法是:
l = [('a', 1), ('b', 2), ('c', 3)]
for num, elt in enumerate(l):
# construct list without current element
l_without_num = copy.deepcopy(l)
l_without_num.remove(elt)
但这似乎效率低下且不优雅。有简单的方法吗?请注意,我基本上想获得不包括当前元素的原始列表的一部分。似乎应该有更简单的方法来做到这一点。
感谢您的帮助。
【问题讨论】:
-
我想到的另一种方法如下: # 假设 k 是要排除的元素 filter(lambda x: x[0] != k, l) 这是可敬的吗?有更好的方法吗?
-
你能解释一下预期的结果是什么吗? "NameError: name 'copy' 未定义"
-
我不清楚这个操作的结果应该是什么。您发布的实现构造但不使用原始列表的 3 个不同副本,缺少三个不同的元素。你能阐明你的目标吗?