複數在我的Python腳本行索引在Python列表
a=function(i)
所以是一個結果列表。在這個列表中,將會有四個值,一個負數,一個正數和兩個複數。只有積極的一個對我有用,我想索引它。我寫這個索引,但它不起作用
a=function(i)
for b in a:
if a>0 and type(a)==type(0.1):
return a
所以我該如何解決它。謝謝。
複數在我的Python腳本行索引在Python列表
a=function(i)
所以是一個結果列表。在這個列表中,將會有四個值,一個負數,一個正數和兩個複數。只有積極的一個對我有用,我想索引它。我寫這個索引,但它不起作用
a=function(i)
for b in a:
if a>0 and type(a)==type(0.1):
return a
所以我該如何解決它。謝謝。
您正在調用return
以外的函數,這是不合法的。
要從列表中獲取正整數,假設「積極」和「消極」數字float
型的:
a = function(i)
index = None
for index, v in enumerate(a):
if type(v) == float and v >= 0:
break
print(index)
print(a[index])
這將使的第一個正實數的指數列入index
。
它是如何工作
基本上,在列表中選擇此代碼循環,並檢查元素的類型。如果一個元素是一個實數,則檢查它的積極性。如果是肯定的,則將其索引的值放入index
,循環停止。
1:如果您頗具意味 「一個complex
對象,它的虛部爲零」,然後通過if v.imag == 0 and v.real >= 0
更換if type(v) == float and v >= 0
。但是,在您的代碼中,您寫了type(a)==type(0.1)
,所以我認爲a
預計爲float
。
它仍然不起作用。 Spyder告訴我:局部變量'index'被分配給但從未使用過。所以我可以再次幫助你,謝謝! –
@KensZheng當然,我建議給你的代碼中沒有使用'index'。但它包含您正在查找的索引的值。要說服自己,在'for'循環後面打印'index',並打印'[index]'。我編輯了我的答案,以突出這一點。另外,我的代碼中有一個錯誤,所以我糾正了它。現在它有效地將索引放入'index'中。 –
你爲什麼要測試'type(v)== int'? OP沒有說這個數字是整數。 –
我必須解決幾乎完全這個問題,並寫了一個函數來找到正根和引發ValueError如果沒有,則:
def find_positive_root(a):
for b in a:
if type(b) == complex or b<0:
continue
return b
raise ValueError('No positive root in {}'.format(a))
寫這樣的專用功能的好處是,你可以測試它:
In [6]: find_positive_root([-4.3, 2.3j, 3, (-4+8j)])
Out[6]: 3
In [7]: find_positive_root([1., -4j, -2.3, 4j])
Out[7]: 1.0
In [8]: find_positive_root([-1., -4j, -2.3, 4j])
...:
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-138-a4ed7675f551> in <module>()
----> 1 find_positive_root([-1., -4j, -2.3, 4j])
<ipython-input-132-9cd37f48e3bb> in find_positive_root(a)
4 continue
5 return b
----> 6 raise ValueError('No positive root in {}'.format(a))
ValueError: No positive root in [-1.0, (-0-4j), -2.3, 4j]
謝謝你的回答。 –
是的。最終我已經嘗試過了。下面是我的代碼:
a=function(i)
for v in a:
if type(v) is sy.add.Add:
pass
elif v > 0:
return v
else:
pass
return v
注:我用解決和sympy在resultlist複數功能(i)是sympy.add.Add。
你的功能(一),它返回什麼...什麼是B? –
爲什麼你把'a'放入if語句 - 它是一個列表。你需要檢查'b',因爲它是列表項 – j2ko
它是一個像'3'一樣的int,或者像'3.0'這樣的一個正的'float',或者是一個沒有像3 + 0j這樣的虛部的正整數'? –