為什么print("Lorem" and "aliqua" in string ) 給出真實。一個布林值,
但是print("Lorem" or "aliqua" in string )給出'Lorem'。一個字串
string = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua"
print("Lorem" and "aliqua" in string )
>>> True
print("Lorem" or "aliqua" in string )
>>> Lorem
uj5u.com熱心網友回復:
嘗試:
print("Lorem" in string and "aliqua" in string )
和
print("Lorem" in string or "aliqua" in string )
解釋:字串中的條件將始終為真,因為它檢查字串是否為非空。
>>> if "harsha":
... print("hi")
...
hi
>>> if "":
... print("hi")
...
<<No output>>
uj5u.com熱心網友回復:
在您的第二個示例中,字串“Lorem”的計算結果為 True,并且正在列印而不檢查“aliqua”是否出現。嘗試搜索兩者。
any([x in string for x in ["Lorem", "aliqua"]])
>> True
uj5u.com熱心網友回復:
使用布爾運算
x and y
x or y
and運算子回傳yif bothx和yare both truthy 。在你的例子y中是"aliqua" in stringwhich 評估為True.
or運算子回傳xifx為真。在您的示例x中是"Lorem".
有關更多詳細資訊,請參閱https://docs.python.org/3/reference/expressions.html#boolean-operations。
如果目標是檢查是否"Lorem"發生"aliqua"在string,請意識到x or y in z不是(x or y) in z但x or (y in z)。解決方案是使用in運算子兩次,例如
if (x in z) or (y in z):
pass
uj5u.com熱心網友回復:
邏輯運算子,如算術運算子,具有相對優先級。*發生在之前 ;in發生在之前and,發生在之前or。
在您的第一種情況下,在 中"Lorem" and "aliqua" in string,評估就像這樣放置括號一樣發生"Lorem" and ("aliqua" in string)。首先"aliqua" in string計算為True,然后"Lorem" and True計算為 boolean True。
在第二種情況下,"Lorem" or "aliqua" in string評估順序相同:"Lorem" or ("aliqua" in string)-> "Lorem" or True->“Lorem”。
然而,現在我們必須談談一個小的優化,它在 Python 之外的許多語言中使用。
從邏輯上講,運算式True and A完全等價于A(您可以從數學上推匯出來)。因此,當 Python 看到的第一部分and是 True(或 true-ish)時,它只會給您第二個引數。(在 Python 中,非零、非空陣列/字典等被稱為“真實”,因為它們在傳遞給時給出 Truebool(x))。類似地or——如果它看到我們有類似“True-ish X and something”的東西,它只會給你回傳那個 X。看看:
In : True and "a"
Out: 'a'
In : "a" and True
Out: True
In : True or "a"
Out: True
In : "a" or True
Out: 'a'
這就是為什么在你的第一種情況下"Lorem" and True計算結果為True(“Lorem”是真實的,所以 Python 只回傳第二個引數),而在第二種情況下"Lorem" or True計算結果為"Lorem"(Python 回傳第一個引數)。
如果要檢查兩個子字串是否都在一個字串中,可以構造一個更長的運算式
"Lorem" in string and "aliqua" in strign
或使用回圈/陣列
string = "Lorem ipsum dolor sit ..."
words = ["Lorem", "ipsum", "dolor"]
# `all` checks whether everything is True
print(all(word in string for word in words))
# True
# `any` checks whether at least something is True
print(any(word in string for word in words))
# True
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/415627.html
標籤:
上一篇:將多個庫匯入與特定功能匯入相結合
下一篇:使用Python將字串轉換為串列
