我有这段代码:
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提供:
some_list.remove(value),但如果找不到值则抛出错误.some_list.pop(some_list[index]),删除列表中给定位置的项目,并将其返回.del (some_list[index]),它从给定索引中删除元素,它与pop不同,因为它不返回值.场景:
我有一个列表,其长度为:370000.在这个列表中,我有以下项目:"a", "y", "Y", "q", "Q", "p", "P",,这意味着这是一个单词列表,但我不时会得到那些单个字符.
我想从列表中删除这些字符,我在python中很新,但我想到的第一件事就是做类似的事情:
for word in words:
if word== 'm' or word== 'y' or word== 'Y' or word== 'p' or word== 'Q' or word== 'q' or word== 'a' or word== 'uh':
words.remove(word)
Run Code Online (Sandbox Code Playgroud)
在一个包含370.000项目的列表中,这种方法正在耗费时间.说真的,很多.
有没有人对如何获得更好的表现有另一个很棒的想法?
提前致谢.
我试图从我的列表中删除奇数索引元素(其中零被认为是偶数)但是以这种方式删除它们将无法工作,因为它会抛出索引值.
lst = ['712490959', '2', '623726061', '2', '552157404', '2', '1285252944', '2', '1130181076', '2', '552157404', '3', '545600725', '0']
def remove_odd_elements(lst):
i=0
for element in lst:
if i % 2 == 0:
pass
else:
lst.remove(element)
i = i + 1
Run Code Online (Sandbox Code Playgroud)
如何迭代我的列表并干净地删除那些奇数索引的元素?
如何333从下面的列表中删除两个出现的?
>>> a = [-1, 1, 66.25, 333, 333, 1234.5]
Run Code Online (Sandbox Code Playgroud)
我在Python 2.7命令行中输入了以下脚本
for num in a:
if num == 333:
a.remove(num)
Run Code Online (Sandbox Code Playgroud)
但只333删除了第一次出现的情况
>>> a
[-1, 1, 66.25, 333, 1234.5]
Run Code Online (Sandbox Code Playgroud)
如何删除所有相同元素的出现?我希望能够指定我希望删除所有实例的元素,并使用相同的名称或其他名称获取新的列表
我想从列表'a'中删除项目,其中列表'b'包含在列表'a'中找到的单词的项目
a = ['one two three', 'four five six', 'seven eight nine']
b = ['two', 'five six']
Run Code Online (Sandbox Code Playgroud)
结果应该是:
a = ['seven eight nine']
Run Code Online (Sandbox Code Playgroud)
这是因为在'a'列表中的项目中可以找到单词"two"和"five six".
这就是我试图解决它的方法:
for i in a:
for x in b:
if x in i:
a.remove(i)
Run Code Online (Sandbox Code Playgroud)
返回:
print a
['four five six', 'seven eight nine']
Run Code Online (Sandbox Code Playgroud)
为什么这不起作用,我该如何解决这个问题呢?
谢谢.
我试图在标题中尽可能清楚,但很难简单地解释它.我必须从某个字符串中删除所有元音; 为此,我创建了一个循环,遍历由该字符串的字符组成的列表,删除元音然后加入它们:
def anti_vowel(text):
vow = ["a", "e", "i", "o", "u"]
chars = []
for i in text:
chars.append(i)
for i in chars:
if i.lower() in vow:
chars.remove(i)
return "".join(chars)
Run Code Online (Sandbox Code Playgroud)
问题是,当我运行代码时,总会有一个不会被删除的元音.例子:
>>> anti_vowel("Hey look Words!")
Hy lk Words!
>>> anti_vowel("Frustration is real")
Frstrton s ral
Run Code Online (Sandbox Code Playgroud)
我不是Python的专家,但这很令人困惑.为什么它会删除一些字母并保留其他字母,即使它们完全相同?
我有一个非常奇怪的错误,我看不出哪里出错了。我想遍历对象列表
objects = [<object 1>, <object 2>, <object 3>, <object 4>, <Query_Category 5>, <object 6>]
Run Code Online (Sandbox Code Playgroud)
我做了一个简单的
for i, object in enumerate(objects):
print "delete ", object
objects.pop(i)
Run Code Online (Sandbox Code Playgroud)
输出是
delete <Query_Category 1>
delete <Query_Category 3>
delete <Query_Category 4>
delete <Query_Category 5>
delete <Query_Category 6>
Run Code Online (Sandbox Code Playgroud)
所以循环忽略了第二个元素?这个结果是可重复的,这意味着如果我再次运行它会导致相同的结果???这对您来说可能无法重现,因为我猜这是由我的代码中的一些奇怪的东西引起的???但我不知道要寻找什么?我在这里缺少总和基本的python原则吗?谢谢卡尔
使用 python,我需要在迭代列表时动态添加列表中的成员:
i = [1,2,3,4,5]
for a in i:
if a == 1:
i.append(100)
print a
Run Code Online (Sandbox Code Playgroud)
能保证正常工作吗?
我有这个xml输入文件:
<?xml version="1.0"?>
<zero>
<First>
<second>
<third-num>1</third-num>
<third-def>object001</third-def>
<third-len>458</third-len>
</second>
<second>
<third-num>2</third-num>
<third-def>object002</third-def>
<third-len>426</third-len>
</second>
<second>
<third-num>3</third-num>
<third-def>object003</third-def>
<third-len>998</third-len>
</second>
</First>
</zero>
Run Code Online (Sandbox Code Playgroud)
我的目标是删除任何<third-def>不是值的第二级.为此,我写了这段代码:
try:
import xml.etree.cElementTree as ET
except ImportError:
import xml.etree.ElementTree as ET
inputfile='inputfile.xml'
tree = ET.parse(inputfile)
root = tree.getroot()
elem = tree.find('First')
for elem2 in tree.iter(tag='second'):
if elem2.find('third-def').text == 'object001':
pass
else:
elem.remove(elem2)
#elem2.clear()
Run Code Online (Sandbox Code Playgroud)
我的问题是elem.remove(elem2).它会跳过其他所有第二级.以下是此代码的输出:
<?xml version="1.0" ?>
<zero>
<First>
<second>
<third-num>1</third-num>
<third-def>object001</third-def>
<third-len>458</third-len>
</second>
<second>
<third-num>3</third-num>
<third-def>object003</third-def>
<third-len>998</third-len>
</second>
</First>
</zero>
Run Code Online (Sandbox Code Playgroud)
现在,如果我取消注释该elem2.clear() …
python ×10
list ×6
iteration ×2
elements ×1
elementtree ×1
loops ×1
performance ×1
python-2.7 ×1
xml-parsing ×1