簡體   English   中英

python:if-in運算符。 這兩個代碼之間有區別嗎?

[英]python: if - in operator. Is there a difference between these two codes?

這兩個代碼有區別嗎?

if x in array[j] and array[j].index(x) == 0:

和,

if array[j] in x and x.index(array[j]) == 0:

如何解釋這兩個代碼?

例如,它將是

'r','b','rbrb'

要么

'BRBRBBBRBRRRBBB','BRBRBRRRBRRRBRB','BBBRBBBRBRRRBBB','BRBRBRRRBRRRB','BRBRBBBRBBBRB'

整個代碼如下所示:

array = []
for i in range(3):
    x = input()
    flag = False
    for j in range(len(array)):
        if x in array[j] and array[j].index(x) == 0:
            array[j] = x
            flag = True
            break
        if array[j] in x and x.index(array[j]) == 0:
            flag = True
            break
    if not flag:
        array.append(x)

print(array)

我花了幾個小時的時間在看這段代碼,以獲得一些想法,但是甚至無法縮小我在搜索引擎中要問的問題,現在我變得更加困惑。

我熟悉類似...的代碼

if x in listA:

要么

listA.index(x) 

但是很難使用flag = False和

if x in listA[j]:

要么

listA[j].index(x)

如果可能,我應該學習什么才能對這個問題有更多的了解?

謝謝您的幫助!

您的問題的答案是這兩個代碼之間的差異完全不同。

您應該學會從概念上分解事物。 因此,您了解:

if x in listA:

但不是:

if x in listA[j]:

那么呢?:

listB = listA[j]
if x in listB

答案是listA是事物列表。 這些內容將取決於您的代碼和您要執行的操作。 在這種情況下,IN listA中的事物再次是列表。 上面的代碼塊演示了這一點。 您可以從listA的位置'j'處拉出列表,然后像使用其他任何列表一樣使用它。 沒關系,它恰好來自另一個列表。 這是分解事物的概念: some_variable [some_index]是一個概念,而some_list中的some_variable是另一個概念。 編程正是以這種方式將事物組合在一起。

所以這:

if x in array[j] and array[j].index(x) == 0:

建議array [j]是一個列表,而x是您可能在該列表中找到的東西。 同樣,由於array [j]是一個列表,因此可以在其上調用.index()。 此代碼完全沒有說明x是什么。 只是可以將其放在列表中。

if array[j] in x and x.index(array[j]) == 0:

這表明x是一個列表,而array [j]可能在該列表中。 您只需顛倒這兩件事的角色。 重要的是要認識到xarray [j]通常可以是同一對象。 只是在x的情況下,您可以直接引用該對象,而在array [j]的情況下,您可以將該對象從列表中拉出。

順便說一句,我一直在說“列表”,以保持簡單。 更准確地說,每當我說“列表”時,我指的是Python序列類型,意思是“第一項,第二項等”。 任何事物,包括您定義的自己的對象,都可以是Sequence類型,因此就是我們在上面所說的“列表”時所說的。 使用這樣的代碼,您通常要處理一個“列表”,有時甚至是一個“元組”,它只是一個您不能修改的“列表”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM