本文将带您了解关于Python-从列表中删除项-在迭代过程中-这个习惯用法有什么问题?的新内容,同时我们还将为您解释python从列表中删除一个元素的相关知识,另外,我们还将为您提供关于33-pyth
本文将带您了解关于Python-从列表中删除项-在迭代过程中-这个习惯用法有什么问题?的新内容,同时我们还将为您解释python从列表中删除一个元素的相关知识,另外,我们还将为您提供关于33-python基础-python3-从列表中删除元素、OOP Python-从列表中删除类实例、Ptython-在迭代字典时如何从字典中删除项目?、Python - 从列表中删除引号的实用信息。
本文目录一览:- Python-从列表中删除项-在迭代过程中-这个习惯用法有什么问题?(python从列表中删除一个元素)
- 33-python基础-python3-从列表中删除元素
- OOP Python-从列表中删除类实例
- Ptython-在迭代字典时如何从字典中删除项目?
- Python - 从列表中删除引号
Python-从列表中删除项-在迭代过程中-这个习惯用法有什么问题?(python从列表中删除一个元素)
作为实验,我这样做:
letters=[''a'',''b'',''c'',''d'',''e'',''f'',''g'',''h'',''i'',''j'',''k'',''l'']for i in letters: letters.remove(i)print letters
最后打印显示不是所有项目都被删除了吗?(其他所有人)。
IDLE 2.6.2 >>> ================================ RESTART ================================>>> [''b'', ''d'', ''f'', ''h'', ''j'', ''l'']>>>
这有什么解释?如何将其重写以删除所有项目?
答案1
小编典典这是什么原因呢?
因为Python语言被设计为以不同方式处理此用例。该文档明确指出:
在循环中修改要迭代的序列是不安全的(这仅适用于可变序列类型,例如列表)。如果你需要修改要遍历的列表(例如,复制选定的项目),则必须遍历一个副本。
强调我的。有关更多信息,请参见链接的页面-文档受版权保护,并保留所有权利。
你可以很容易地理解为什么得到了你想要的东西,但是基本上这是未定义的行为,可以很容易地更改,而不会因构建而异。只是不要这样做。
这就像想知道为什么i += i++ + ++i
在针对你的语言的特定编译器版本中,该行在你的体系结构上所做的事情到底是怎么回事 -包括但不限于破坏计算机并让恶魔从你的鼻子里飞出来 :)
如何将其重写以删除所有项目?
- del letters[:]
(如果你需要更改对此对象的所有引用)
- letters[:] = []
(如果你需要更改对此对象的所有引用)
- letters = []
(如果你只想使用一个新对象)
也许你只是想根据条件删除一些物品?在这种情况下,你应该遍历列表的副本。制作副本的最简单方法是使用如下[:]语法制作包含整个列表的切片:
#remove unsafe commandscommands = ["ls", "cd", "rm -rf /"]for cmd in commands[:]: if "rm " in cmd: commands.remove(cmd)
如果你的检查不是特别复杂,则可以(可能应该)过滤:
commands = [cmd for cmd in commands if not is_malicious(cmd)]
33-python基础-python3-从列表中删除元素
1-remove()方法
-
根据值删除元素.
- remove()方法传入一个列表中的值,它将从被调用的列表中删除。
- 如果该值在列表中出现多次,只有第一次出现的值会被删除。
- 如果要删除的值可能在列表中出现多次,就需要使用循环来判断是否删除了所有这样的值
-
试图删除列表中不存在的值,将导致 ValueError 错误。
2-del语句
- del 语句将根据元素索引删除列表中的值,表中被删除值后面的所有值,都将向前移动一个下标。
- del 的常见错误
如果不确定该使用del 语句还是pop() 方法,
下面是一个简单的判断标准:
-
如果你要从列表中删除一个元素,且不再以任何方式使用它,就使用del 语句;
-
如果你要在删除元素后还能继续使用它,就使用方法pop() 。
3-pop()方法
-
方法pop() 可删除列表末尾的元素,并能够接着使用它。
- 弹出列表中任何位置处的的元素
-
只需在括号中指定要删除的元素的索引即可。
OOP Python-从列表中删除类实例
我有一个列表,其中保存了由特定类创建的对象。
我想知道,因为我无法解决此问题,如何从列表中删除该类的实例?
这应该基于了解对象的一个属性而发生。
Ptython-在迭代字典时如何从字典中删除项目?
如何解决Ptython-在迭代字典时如何从字典中删除项目??
此答案不适用于python3
,并且会给出RuntimeError
。
RuntimeError
:字典在迭代过程中更改了大小。
发生这种情况是因为mydict.keys()
返回的是迭代器而不是列表。正如评论中指出的那样,只需将其转换mydict.keys()
为列表即可list(mydict.keys())
,它应该可以工作。
控制台中的一个简单测试显示,在迭代字典时你无法修改字典:
>>> mydict = {''one'': 1, ''two'': 2, ''three'': 3, ''four'': 4}
>>> for k, v in mydict.iteritems():
... if k == ''two'':
... del mydict[k]
...
------------------------------------------------------------
Traceback (most recent call last):
File "<ipython console>", line 1, in <module>
RuntimeError: dictionary changed size during iteration
如delnan的回答所述,当迭代器尝试移至下一个条目时,删除条目会导致问题。而是使用keys()方法获取键列表并进行处理:
>>> for k in mydict.keys():
... if k == ''two'':
... del mydict[k]
...
>>> mydict
{''four'': 4, ''three'': 3, ''one'': 1}
如果需要根据项目值删除,请使用items()方法:
>>> for k, v in mydict.items():
... if v == 3:
... del mydict[k]
...
>>> mydict
{''four'': 4, ''one'': 1}
解决方法
在Python上进行迭代时从字典中删除项目是否合法?
例如:
for k,v in mydict.iteritems():
if k == val:
del mydict[k]
这个想法是从字典中删除不满足特定条件的元素,而不是创建一个新字典,该字典是正在迭代的字典的子集。
这是一个好的解决方案吗?有没有更优雅/更有效的方法?
Python - 从列表中删除引号
如何解决Python - 从列表中删除引号?
我有一个包含数字列表的数据框。打印列表时,我想删除前面和末尾的引号。 我无法用替换功能替换它们。
a = df.iloc[0][''ids'']
b = [a]
b (Output)
[''2769734487041924,7608779650164612''] <-- one quotation mark at beginning and end
我想要的(手动创建):
row_ids = [1234,4567]
row_ids (Output)
[1234,4567] <-- That''s the format I want to get the list to,without the quotation marks
b 和 row_ids 数据类型都返回为“列表”,因此必须有一种方法可以让列表不带引号。
解决方法
我认为 a
是一个字符串,因此要从中获取 b
作为您需要的整数列表
b = list(map(int,a.split(",")))
,
解析字符串并拆分,然后使用十进制将其转换为int。
lst = [''2769734487041924,7608779650164612'']
lst2 = []
for i in "".join(lst).split(","):
lst2.append(int(i,base=10))
print(lst2)
关于Python-从列表中删除项-在迭代过程中-这个习惯用法有什么问题?和python从列表中删除一个元素的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于33-python基础-python3-从列表中删除元素、OOP Python-从列表中删除类实例、Ptython-在迭代字典时如何从字典中删除项目?、Python - 从列表中删除引号的相关知识,请在本站寻找。
本文标签: