相关疑难解决方法(0)

迭代时如何从列表中删除项目?

我正在迭代Python中的元组列表,并且如果它们符合某些条件,我会尝试删除它们.

for tup in somelist:
    if determine(tup):
         code_to_remove_tup
Run Code Online (Sandbox Code Playgroud)

我应该用什么代替code_to_remove_tup?我无法弄清楚如何以这种方式删除项目.

python iteration

917
推荐指数
16
解决办法
45万
查看次数

有序集Python 2.7

我有一个列表,我试图从中删除重复的项目.我正在使用python 2.7.1所以我可以简单地使用set()函数.但是,这会重新排序我的列表.对于我的具体情况,这是不可接受的.

下面是我写的一个函数; 这样做.但是我想知道是否有更好/更快的方式.对此也有任何意见,将不胜感激.

    def ordered_set(list_):

        newlist = []
        lastitem = None
        for item in list_:

            if item != lastitem:
                newlist.append(item)
                lastitem = item

        return newlist
Run Code Online (Sandbox Code Playgroud)

上面的函数假设没有项目是None,并且项目是有序的(即,''a','a','a','b','b','c','d '])

上面的函数将['a','a','a','b','b','c','d']作为['a','b','c','d'返回].

python list set python-2.7

12
推荐指数
4
解决办法
2万
查看次数

从列表中删除正在迭代的对象

考虑:

fooList = [1, 2, 3, 4] # Ints for example only, in real application using objects

for foo in fooList:
    if fooChecker(foo):
        remove_this_foo_from_list
Run Code Online (Sandbox Code Playgroud)

具体如何foo从列表中删除?请注意,我仅使用整数,在实际应用程序中有一个任意对象列表.

谢谢.

python list

1
推荐指数
2
解决办法
134
查看次数

一种pythonic方法,用于删除元素的所有实例而不生成新列表

有许多类似的问题(这里是一个),但我见过的解决方案使用列表理解或过滤器,这些方法生成一个新的列表(或Python 3.x中的过滤器的新迭代器).有些解决方案可以通过修改列表本身来删除实例(就像这样,这个),这些将是我的最后手段.但是,我想看看是否有一个更优雅("Pythonic",另一个问题称之为)这样做的方式.

为什么我无视生成新列表的解决方案:我正在迭代列表集合,Python允许我修改我正在迭代的"当前"列表,但不是完全替换它:

>>> ll= [[1,2,3], [2,3,4], [4,5,6]]

>>> for l in ll:
        if l[0] == 2:
            l = [10]
>>> ll
[[1, 2, 3], [2, 3, 4], [4, 5, 6]]   #replacement didn't happen

>>> for l in ll:
        if l[0] == 2:
            l.remove(2)
>>> ll
[[1, 2, 3], [3, 4], [4, 5, 6]]   #modification succeeded 
Run Code Online (Sandbox Code Playgroud)

python list data-structures

0
推荐指数
1
解决办法
160
查看次数

标签 统计

python ×4

list ×3

data-structures ×1

iteration ×1

python-2.7 ×1

set ×1