[英]Why using square brackets with if doesn't give an error in python
好的,所以我是編程方面的超級菜鳥。 編寫了一個程序來查找數組中每個元素的頻率
print("Running own")
arr = [1, 2, 8, 3, 2, 2, 2, 5, 1];
fr = [None] * len(arr)
vsi = -1
for i in range(0, len(arr)):
count = 1
for j in range(i + 1, len(arr)):
if (arr[i] == arr[j]):
count += 1
fr[j] = vsi
print("j={0} and fr[j]={1}".format(j, fr[j]))
if [fr[i] != vsi]:
fr[i] = count
print(fr)
print("fr=", fr)
print("---------------------");
print(" Element | Frequency");
print("---------------------");
for i in range(0, len(fr)):
if(fr[i] != vsi):
print(" " + str(arr[i]) + " | " + str(fr[i]));
print("---------------------")
所以我在 if 上使用方括號來檢查元素是否被訪問並將計數分配給頻率數組。(這一行: if [fr[i]:= vsi]: )在我的頭撞到牆上 5 小時后並跟蹤程序 20 次,我發現編譯器將其視為始終正確。
為什么我一開始沒有收到錯誤消息?
[fr[i] != vsi ]
是一個列表,只要里面有東西,它就是真的。
例子:
if [0]: #True
if [1]: #True
if [""]: #True
if []: #False
因為它將語句轉換為列表,並且對結果列表進行 boolean 檢查,所以即使內部元素為 False,列表本身也應該返回 True,因為它不為空,所以即使語法確實令人困惑,python語句在 if 條件中可用,因此這是 python 的有效語法。
就像這樣做:
a=1
b=2
some_list = [a>b]
if some_list:
print(f'{some_list} is Truthy')
>>>[False] is Truthy
另一個演示:
[a>b]
Out[10]: [False]
bool([a>b])
Out[11]: True
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.