2014-11-03 40 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語句不應該在你的身體