2014-11-03 69 views
1
z=[1,2,","] 

count=0 


for i in z: 
    if (",") in z: 
     count+=1 
     print count 

此python代码包含列表中的所有逗号z。为什么?答案是3.当它应该是一个。可以通过更改元素进行测试。小编程拼图

如果列表元素逗号“,”被删除,则程序产生空白,而不是2个逗号作为计数。

问题:

  1. 有人可以回答,请为什么逗号只获取算的?
  2. 为什么逗号数是3时,它应该是一个。

感谢

+0

当你在众多的答案解决的具体问题,还要考虑你的方法是否是最有效的/可读。另请参阅https://docs.python.org/2/tutorial/datastructures.html#more-on-list count()。 – hexparrot 2014-11-03 19:07:10

回答

2

将其更改为

if (",") in i: 

真的,你应该使用更好的名称(i通常指索引到一个数组或一个整数计..而你迭代列表中的实际项目)

for item in z: 
    if (",") in item: 
     count+=1 
     print count 
0

你之所以再看到3为你的答案是因为这样:

if (",") in z: 

要跨列表,并在您检查,如果','在列表z,它是列表中的每个元素进行迭代。你计数变量相应地增加。

0

你检查过三次,'是'是否在z中。是的。是的,它仍然是。是的。这是3

for i in z: 
    if i == ',': 
     count+=1 
print count 
0

当您使用if (",") in z蟒蛇检查逗号是在你的清单,这将每次返回true,当你删除“”从列表中它永远不会产生真实,则将被计零,因此正确的版本将是

z=[1,2,","] 

count=0 

for i in z: 
    if i == ',': 
     count+=1 
print count 

,也是你的print语句不应该在你的身体