相关疑难解决方法(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万
查看次数

循环"忘记"删除一些项目

在这段代码中,我试图创建一个函数anti_vowel,它将从字符串中删除所有元音(aeiouAEIOU).我认为它应该可以正常工作,但是当我运行它时,示例文本"嘿看单词!" 以"Hy lk Words!"返回.它"忘记"删除最后一个'o'.怎么会这样?

text = "Hey look Words!"

def anti_vowel(text):

    textlist = list(text)

    for char in textlist:
        if char.lower() in 'aeiou':
            textlist.remove(char)

    return "".join(textlist)

print anti_vowel(text)
Run Code Online (Sandbox Code Playgroud)

python string list

77
推荐指数
6
解决办法
7039
查看次数

Python,从循环中删除具有特定键的JSON元素

使用 Python,我需要删除 JSON 数组中具有特定 'name' 键值的所有对象。但是,我不能从循环中做到这一点。

成像我想删除以下输入中所有名称为“坏”的项目:

{
  'myArray' : [
    {
      'name' : 'good',
      'value' : '1'
    },
    {
      'name' : 'bad',
      'value' : '2'
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

所以我使用以下 Python 测试用例:

myData = {'myArray': [{'name': 'good', 'value': '1'}, {'name': 'bad', 'value': '2'}]}

for a in myData['myArray']:
  if (a['name'] =='bad'):
    del a

print(json.dumps(myData))
Run Code Online (Sandbox Code Playgroud)

我看到 myData 没有改变。

我认为这是因为我尝试删除循环的迭代器,这可能被解释器视为有风险的操作,但是 Python 没有报告运行时错误或警告。

在这种情况下推荐的方法是什么?

谢谢!

python json for-loop

5
推荐指数
1
解决办法
7785
查看次数

在 Python 中使用 enumerate 迭代列表时是否应该创建一个副本

在回答这个问题时,我遇到了一些我在Python中从未想过的事情(由用户指出)。

基本上,我已经知道(这里有一个关于它的有趣线程),在 Python 中迭代和改变列表时我必须制作一个副本,以避免奇怪的行为。

现在,我的问题是,使用enumerate可以克服这个问题吗?

test_list = [1,2,3,4]
for index,item in enumerate(test_list):
    if item == 1:
        test_list.pop(index)
Run Code Online (Sandbox Code Playgroud)

这段代码被认为是安全的还是我应该使用,

for index,item in enumerate(test_list[:]):
Run Code Online (Sandbox Code Playgroud)

python iteration list

3
推荐指数
1
解决办法
2593
查看次数

标签 统计

python ×4

iteration ×2

list ×2

for-loop ×1

json ×1

string ×1