我在python中有一個列表,我正在搜索第一次出現的值(> = 5000000),但它返回第一個> = 500000。 這裏的命令:搜索第一次發生時出錯
First_Range_Init_Freq = next(x for x in Freq_Cust if x > '5000000.000')
奇怪的是,如果我在列表中搜索的精確值,它工作正常「==」,但如果我搜索更大的東西或等於返回錯誤值「> =」。
任何想法?
我在python中有一個列表,我正在搜索第一次出現的值(> = 5000000),但它返回第一個> = 500000。 這裏的命令:搜索第一次發生時出錯
First_Range_Init_Freq = next(x for x in Freq_Cust if x > '5000000.000')
奇怪的是,如果我在列表中搜索的精確值,它工作正常「==」,但如果我搜索更大的東西或等於返回錯誤值「> =」。
任何想法?
不知道我是否正確理解問題(數據不足)。
你想,
string
X> 「5000000.000」反正進行比較的int
(> = 5000000),如果它的第一次出現你正在努力尋找可以如以下使用數組索引方法。 (利用問題的一個樣本列表)
Freq_Cust = ['4800000.000', '5000000.000' , '5000001.000', '50000010.000', '4900000.000', '500000.000' ]
First_Range_Init_Freq = [Freq_Cust.index(x) for x in Freq_Cust if x >= '5000000.000'][0]
print Freq_Cust[First_Range_Init_Freq]
結果:
Python 2.7.9 (default, Dec 10 2014, 12:24:55) [MSC v.1500 32 bit (Intel)] on win32
Type "copyright", "credits" or "license()" for more information.
>>> ================================ RESTART ================================
>>>
5000000.000
>>>
,即可獲得使用它的位置,
>>> print First_Range_Init_Freq
1
我假設你用字符串比較字符串或詮釋INT。否則,你需要平衡與正確類型的比較。
讓我知道,如果這不是你在找什麼。並更新問題的更多細節。
EDIT1
根據您的意見。我相信問題在於你將一個數字作爲文本進行比較,因此給出了不正確的結果。
例如,見下文,
>>> '5000000' == '5000000.000'
False
>>> '5000000.000' > '5000000'
True
>>> 5000000 == 5000000.000
True
>>>
考 '5000000' 不是= '5000000.000',而一個int
5000000號是=浮5000000.000。
因此,如果您將列表值設置爲浮點數,並且使用浮點數進行比較,則會生成正確的結果。
Freq_Cust = [ '4800000', '5000000', '5000001', '50000010', '49000000', '500000']
Freq_Cust = map(float,Freq_Cust)
First_Range_Init_Freq = [Freq_Cust.index(x) for x in Freq_Cust if x >= float('5000000.000')][0]
print Freq_Cust[First_Range_Init_Freq]
>>>
5000000.0
>>>
Ofcourse可以只比較用x> = 5000000.000或x > = 500萬
如果您的列表值部分int
和部分float
,你可能要map
到float
作爲一個包羅萬象的解決方案。
非常感謝您的幫助! :) 這是我第一次用Python進行編程,這就是爲什麼我面臨這些問題... 我試圖在列表中第一次出現value> = 5000000.000,並且它的位置在列表。 我正在從文件中讀取這些值,並在列表中認爲這些值都是浮點數,但顯然不是。 –
非常感謝您的幫助! :) 這是我第一次用Python進行編程,這就是爲什麼我面臨這些問題... 我試圖在列表中第一次出現value> = 5000000.000,並且它的位置在列表。 我試過了你的建議,但沒有奏效。 我正在從文件中讀取這些值,並在列表中認爲這些值都是浮動的,但顯然不是。我嘗試將它轉換爲float([Freq_Cust]中的[float(Freq_Cust)],它執行該命令,但在鍵入命令「type(Freq_Cust)is float」時返回「False」。 我必須將列表轉換爲浮動嗎? –
看到我對此編輯的回覆 –
您將它與*字符串*進行比較? –