关于python:为什么我不能从列表中删除字符?

Why can't I remove character from the list? Also why can't I even print the element?

本问题已经有最佳答案,请猛点这里访问。

我对这个代码有两个问题。首先,它不会删除列表行末尾的''。所以我试着打印X来看看到底发生了什么,但是我遇到了第二个问题,那就是X不能被打印出来。似乎有些断行和"51"被打印出来了,但为什么只有那些而不是其他?

怎么会这样?我完全不知道。

编辑:这不是副本。我想知道为什么它不能删除,但为什么它不能打印。@阿兰费在你把问题标记为重复之前先把它读了。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
row = ['
'
, '2017-18 ', '
'
, 'GSW', '
'
, '
'
, '51', '
'
, '32.0', '
'
, '26.4', '
'
, '8.4', '
'
, '16.9', '
'
, '49.5', '
'
, '4.2', '
'
, '9.8', '
'
, '42.3', '
'
, '5.5', '
'
, '5.9', '
'
, '92.1', '
'
, '0.7', '
'
, '4.4', '
'
, '5.1', '
'
, '6.1', '
'
, '3.0', '
'
, '1.6', '
'
, '0.2', '
'
, '2.2', '
'
, '43.8', '
'
, '5', '
'
, '0', '
'
, '9.5', '
'
]

i = 0
for x in row:
  print(i,":", x)
  if x in ('
'
, '°', '%'):
    row.remove(x)
  i+=1
print(row)

它的输出是

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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
50
51
52
53
54
55
56
57
0 :

1 :

2 :

3 : 51
4 :

5 :

6 :

7 :

8 :

9 :

10 :

11 :

12 :

13 :

14 :

15 :

16 :

17 :

18 :

19 :

20 :

21 :

22 :

23 :

24 :

25 :

26 :

27 :

['2017-18 ', 'GSW', '51', '32.0', '26.4', '8.4', '16.9', '49.5', '4.2', '9.8', '42.3', '5.5', '5.9', '92.1', '0.7', '4.4', '5.1', '6.1', '3.0', '1.6', '0.2', '2.2', '43.8', '5', '0', '9.5', '
'
]

您可以在此处运行此代码:https://repl.it/@leonardchoo/listnotworking


试试这个,

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
row = ['
'
, '2017-18 ', '
'
, 'GSW', '
'
, '
'
, '51', '
'
, '32.0', '
'
, '26.4', '
'
, '8.4', '
'
, '16.9', '
'
, '49.5', '
'
, '4.2', '
'
, '9.8', '
'
, '42.3', '
'
, '5.5', '
'
, '5.9', '
'
, '92.1', '
'
, '0.7', '
'
, '4.4', '
'
, '5.1', '
'
, '6.1', '
'
, '3.0', '
'
, '1.6', '
'
, '0.2', '
'
, '2.2', '
'
, '43.8', '
'
, '5', '
'
, '0', '
'
, '9.5', '
'
]

row = [x for x in row if x not in ['
'
, '°', '%']]

for i, x in enumerate(row):
    print(i, x)

产量

1
2
3
4
5
6
0 2017-18
1 GSW
...
23 5
24 0
25 9.5


row = ['', '2017-18 ', '', 'GSW', '', '', '51', '', '32.0', '', '26.4', '', '8.4', '', '16.9', '', '49.5', '', '4.2', '', '9.8', '', '42.3', '', '5.5', '', '5.9', '', '92.1', '', '0.7', '', '4.4', '', '5.1', '', '6.1', '', '3.0', '', '1.6', '', '0.2', '', '2.2', '', '43.8', '', '5', '', '0', '','9.5','']removeelement=["","?","%"]对于列表(行)中的i:如果我在搬迁:行。删除(i)打印(行)