我有一个列表,如:
a = [[1,'b',2],[3,':',4],[5,':',6]]
Run Code Online (Sandbox Code Playgroud)
我想删除'b'和':'字符,以便我最终得到:
[[1,2],[3,4],[5,6]]
Run Code Online (Sandbox Code Playgroud)
(请注意,这些字符位于每个子列表的第二个位置这一事实只是我选择的一个例子 - 我正在处理的真实数据集在随机位置具有相同的字符).
我选择使用列表理解来做到这一点.以下是迭代子列表中每个项目的代码示例:
for list in a:
for number in list:
print number
Run Code Online (Sandbox Code Playgroud)
但是当我实现我的列表理解而不是像这样的print语句时:
b = []
for list in a:
for number in list:
b = [number for number in list if number != 'b' and number != ':']
print b
Run Code Online (Sandbox Code Playgroud)
我得到以下输出:
[1, 2]
[1, 2]
[1, 2]
[3, 4]
[3, 4]
[3, 4]
[5, 6]
[5, 6]
[5, 6]
Run Code Online (Sandbox Code Playgroud)
我的问题是,为什么每个子列表有三个副本?我在期待
[1,2]
[3,4]
[5,6]
Run Code Online (Sandbox Code Playgroud)
任何帮助和/或指导将不胜感激.
干杯.