>>> n
['UUU', 'F', 'CUU', 'L', 'AUU', 'I', 'GUU', 'V', 'UUC', 'F', 'CUC', 'L', 'AUC', 'I', 'GUC', 'V', 'UUA', 'L', 'CUA', 'L', 'AUA', 'I', 'GUA', 'V', 'UUG', 'L', 'CUG', 'L', 'AUG', 'M', 'GUG', 'V', 'UCU', 'S', 'CCU', 'P', 'ACU', 'T', 'GCU', 'A', 'UCC', 'S', 'CCC', 'P', 'ACC', 'T', 'GCC', 'A', 'UCA', 'S', 'CCA', 'P', 'ACA', 'T', 'GCA', 'A', 'UCG', 'S', 'CCG', 'P', 'ACG', 'T', 'GCG', 'A', 'UAU', 'Y', 'CAU', 'H', 'AAU', 'N', 'GAU', 'D', 'UAC', 'Y', 'CAC', 'H', 'AAC', 'N', 'GAC', 'D', 'UAA', 'Stop', 'CAA', 'Q', 'AAA', 'K', 'GAA', 'E', 'UAG', 'Stop', 'CAG', 'Q', 'AAG', 'K', 'GAG', 'E', 'UGU', 'C', 'CGU', 'R', 'AGU', 'S', 'GGU', 'G', 'UGC', 'C', 'CGC', 'R', '', '', '', '', '', 'AGC', 'S', '', '', '', '', '', 'GGC', 'G', 'UGA', 'Stop', '', '', 'CGA', 'R', '', '', '', '', '', 'AGA', 'R', '', '', '', '', '', 'GGA', 'G', 'UGG', 'W', '', '', '', '', '', 'CGG', 'R', '', '', '', '', '', 'AGG', 'R', '', '', '', '', '', 'GGG', 'G', '']
>>> for item in n:
... if item=='':
... n.remove(item)
...
>>> n
['UUU', 'F', 'CUU', 'L', 'AUU', 'I', 'GUU', 'V', 'UUC', 'F', 'CUC', 'L', 'AUC', 'I', 'GUC', 'V', 'UUA', 'L', 'CUA', 'L', 'AUA', 'I', 'GUA', 'V', 'UUG', 'L', 'CUG', 'L', 'AUG', 'M', 'GUG', 'V', 'UCU', 'S', 'CCU', 'P', 'ACU', 'T', 'GCU', 'A', 'UCC', 'S', 'CCC', 'P', 'ACC', 'T', 'GCC', 'A', 'UCA', 'S', 'CCA', 'P', 'ACA', 'T', 'GCA', 'A', 'UCG', 'S', 'CCG', 'P', 'ACG', 'T', 'GCG', 'A', 'UAU', 'Y', 'CAU', 'H', 'AAU', 'N', 'GAU', 'D', 'UAC', 'Y', 'CAC', 'H', 'AAC', 'N', 'GAC', 'D', 'UAA', 'Stop', 'CAA', 'Q', 'AAA', 'K', 'GAA', 'E', 'UAG', 'Stop', 'CAG', 'Q', 'AAG', 'K', 'GAG', 'E', 'UGU', 'C', 'CGU', 'R', 'AGU', 'S', 'GGU', 'G', 'UGC', 'C', 'CGC', 'R', 'AGC', 'S', 'GGC', 'G', 'UGA', 'Stop', 'CGA', 'R', 'AGA', 'R', 'GGA', 'G', 'UGG', 'W', '', '', '', '', 'CGG', 'R', '', '', '', '', '', 'AGG', 'R', '', '', '', '', '', 'GGG', 'G', '']
如何解释迭代"删除"操作无法删除所有''列表中的元素?
答案 0 :(得分:1)
您还可以使用列表理解:
>>> n = ['UUU', 'F', 'CUU', 'L', 'AUU', 'I', 'GUU', 'V', 'UUC', 'F', 'CUC', 'L', 'AUC', 'I', 'GUC', 'V', 'UUA', 'L', 'CUA', 'L', 'AUA', 'I', 'GUA', 'V', 'UUG', 'L', 'CUG', 'L', 'AUG', 'M', 'GUG', 'V', 'UCU', 'S', 'CCU', 'P', 'ACU', 'T', 'GCU', 'A', 'UCC', 'S', 'CCC', 'P', 'ACC', 'T', 'GCC', 'A', 'UCA', 'S', 'CCA', 'P', 'ACA', 'T', 'GCA', 'A', 'UCG', 'S', 'CCG', 'P', 'ACG', 'T', 'GCG', 'A', 'UAU', 'Y', 'CAU', 'H', 'AAU', 'N', 'GAU', 'D', 'UAC', 'Y', 'CAC', 'H', 'AAC', 'N', 'GAC', 'D', 'UAA', 'Stop', 'CAA', 'Q', 'AAA', 'K', 'GAA', 'E', 'UAG', 'Stop', 'CAG', 'Q', 'AAG', 'K', 'GAG', 'E', 'UGU', 'C', 'CGU', 'R', 'AGU', 'S', 'GGU', 'G', 'UGC', 'C', 'CGC', 'R', '', '', '', '', '', 'AGC', 'S', '', '', '', '', '', 'GGC', 'G', 'UGA', 'Stop', '', '', 'CGA', 'R', '', '', '', '', '', 'AGA', 'R', '', '', '', '', '', 'GGA', 'G', 'UGG', 'W', '', '', '', '', '', 'CGG', 'R', '', '', '', '', '', 'AGG', 'R', '', '', '', '', '', 'GGG', 'G', '']
>>> n = [x for x in n if x != ''] # or more simply [x for x in n if x]
>>> print n
['UUU', 'F', 'CUU', 'L', 'AUU', 'I', 'GUU', 'V', 'UUC', 'F', 'CUC', 'L', 'AUC', 'I', 'GUC', 'V', 'UUA', 'L', 'CUA', 'L', 'AUA', 'I', 'GUA', 'V', 'UUG', 'L', 'CUG', 'L', 'AUG', 'M', 'GUG', 'V', 'UCU', 'S', 'CCU', 'P', 'ACU', 'T', 'GCU', 'A', 'UCC', 'S', 'CCC', 'P', 'ACC', 'T', 'GCC', 'A', 'UCA', 'S', 'CCA', 'P', 'ACA', 'T', 'GCA', 'A', 'UCG', 'S', 'CCG', 'P', 'ACG', 'T', 'GCG', 'A', 'UAU', 'Y', 'CAU', 'H', 'AAU', 'N', 'GAU', 'D', 'UAC', 'Y', 'CAC', 'H', 'AAC', 'N', 'GAC', 'D', 'UAA', 'Stop', 'CAA', 'Q', 'AAA', 'K', 'GAA', 'E', 'UAG', 'Stop', 'CAG', 'Q', 'AAG', 'K', 'GAG', 'E', 'UGU', 'C', 'CGU', 'R', 'AGU', 'S', 'GGU', 'G', 'UGC', 'C', 'CGC', 'R', 'AGC', 'S', 'GGC', 'G', 'UGA', 'Stop', 'CGA', 'R', 'AGA', 'R', 'GGA', 'G', 'UGG', 'W', 'CGG', 'R', 'AGG', 'R', 'GGG', 'G']
答案 1 :(得分:1)
为了进一步说明为什么你不应该以这种方式更改列表,因为你要对它进行迭代,请考虑以下简化你正在做的事情:
>>> a = range(10)
>>> a
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> for item in a:
... print item
... a.remove(item)
...
0
2
4
6
8
>>> a
[1, 3, 5, 7, 9]
如图所示,通过更改列表,您还可以在连续迭代中更改您操作的元素。这几乎从来都不是一个好主意,似乎不是你想要实现的目标。
相反,列表理解如何:
[item for item in mylist if item != '']
答案 2 :(得分:0)
而不是尝试删除空白,而是尝试创建一个仅包含非空白项目的新数组
a = ['UUU', 'F', 'CUU', 'L', 'AUU', 'I', 'GUU', 'V', 'UUC', 'F', 'CUC', 'L', 'AUC', 'I', 'GUC', 'V', 'UUA', 'L', 'CUA', 'L', 'AUA', 'I', 'GUA', 'V', 'UUG', 'L', 'CUG', 'L', 'AUG', 'M', 'GUG', 'V', 'UCU', 'S', 'CCU', 'P', 'ACU', 'T', 'GCU', 'A', 'UCC', 'S', 'CCC', 'P', 'ACC', 'T', 'GCC', 'A', 'UCA', 'S', 'CCA', 'P', 'ACA', 'T', 'GCA', 'A', 'UCG', 'S', 'CCG', 'P', 'ACG', 'T', 'GCG', 'A', 'UAU', 'Y', 'CAU', 'H', 'AAU', 'N', 'GAU', 'D', 'UAC', 'Y', 'CAC', 'H', 'AAC', 'N', 'GAC', 'D', 'UAA', 'Stop', 'CAA', 'Q', 'AAA', 'K', 'GAA', 'E', 'UAG', 'Stop', 'CAG', 'Q', 'AAG', 'K', 'GAG', 'E', 'UGU', 'C', 'CGU', 'R', 'AGU', 'S', 'GGU', 'G', 'UGC', 'C', 'CGC', 'R', '', '', '', '', '', 'AGC', 'S', '', '', '', '', '', 'GGC', 'G', 'UGA', 'Stop', '', '', 'CGA', 'R', '', '', '', '', '', 'AGA', 'R', '', '', '', '', '', 'GGA', 'G', 'UGG', 'W', '', '', '', '', '', 'CGG', 'R', '', '', '', '', '', 'AGG', 'R', '', '', '', '', '', 'GGG', 'G', '']
b = []
for x in a:
if len(x)>0:
b.append(x)
答案 3 :(得分:0)
另一种选择是
while '' in n:
n.remove('')
答案 4 :(得分:0)
正如dylrei所提到的,列表理解是一种pythonic解决方案,但由于它复制了列表,因此(非常)巨大的列表存在缺陷。如果您有一个巨大的列表,并且您要删除的项目在列表中只有几次,那么我建议以下(较少pythonic)解决方案:
>>> l=[1,2,3,4,5,6,1,2,3,1,2,1,1]
>>> while True:
... try:
... l.remove(1)
... except ValueError:
... break
...
>>> l
[2, 3, 4, 5, 6, 2, 3, 2]