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

从列表中删除项目时出现奇怪的结果

我有这段代码:

numbers = range(1, 50)

for i in numbers:
    if i < 20:
        numbers.remove(i)

print(numbers)
Run Code Online (Sandbox Code Playgroud)

但我得到的结果是:

[2,4,6,8,10,12,14,16,18,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35 ,36,37,38,39,40,41,42,43,44,45,46,47,48,49]

当然我希望结果中没有出现20以下的数字,我假设我在删除时做错了.

python loops list

32
推荐指数
3
解决办法
5844
查看次数

Python切片分配内存使用情况

我在这里读了一篇关于Stack Overflow的评论,在更改列表时进行切片分配的内存效率更高.例如,

a[:] = [i + 6 for i in a]
Run Code Online (Sandbox Code Playgroud)

应该比内存更有效

a = [i + 6 for i in a]
Run Code Online (Sandbox Code Playgroud)

因为前者替换现有列表中的元素,而后者创建一个新列表并重新绑定a到该新列表,将旧内容留a在内存中,直到它可以被垃圾收集.对速度进行基准测试,后者稍快一些:

$ python -mtimeit -s 'a = [1, 2, 3]' 'a[:] = [i + 6 for i in a]'
1000000 loops, best of 3: 1.53 usec per loop
$ python -mtimeit -s 'a = [1, 2, 3]' 'a = [i + 6 for i in a]'
1000000 loops, best of 3: 1.37 usec per loop …
Run Code Online (Sandbox Code Playgroud)

python performance benchmarking memory-management

22
推荐指数
1
解决办法
3267
查看次数

从字符串python中删除元音

我期待下面的代码中的元音免费字符串,但它没有给我我期待的东西.请帮忙.

def disemvowel(word):
    words = list(word)
    for i in words:
        if i.upper() == "A" or i.upper() == "E" or i.upper() == "I" or i.upper() == "O" or i.upper() == "U":
            words.remove(i)


    return print(''.join(words))

disemvowel("uURII")
Run Code Online (Sandbox Code Playgroud)

我期待输出为'R',但我得到'URI'.

python python-3.x

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