在python中,我想从列表中删除一个项,然后合并此列表到一个新列表。我可以链接方法,以便在一行中发生吗?
例如:
a = [1,2,3,4]
# I want to remove 3 and add [10,11]
a.remove(3) #it doesn't return a, so I can't do this in one line
a += [10,11]
答案 0 :(得分:11)
使用列表理解和连接:
a = [i for i in a if i != 3] + [10, 11]
这将删除列表中的{em>多个副本3
。如果您只想删除3
的第一个出现,即使有多个副本,您也需要坚持切片:
a = a[:a.index(3)] + a[a.index(3) + 1:] + [10, 11]
但是这会导致两次搜索该索引。由于您在评论中提到数据中没有重复,因此您应该坚持使用第一个选项。
答案 1 :(得分:1)
你可以这样使用,
>>>print filter(lambda x: x is not 3, [1,2,3,4]) + [10,11]
[1, 2, 4, 10, 11]
答案 2 :(得分:0)
您可以在没有要删除的位置的情况下拆分数组,然后连接尾部:
a = [1,2,3,4]
a = a[:2]+a[3:]+[10,11]
所以你可以在一行中删除一个位置。
答案 3 :(得分:0)
替代方案:
a = [1,2,3,4]
new = (lambda b=iter(a): list(iter(b.next, 3)) + list(b) + [10, 11])()
# [1, 2, 4, 10, 11]
这很丑陋 - 但删除了索引查找