Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python:if-in操作符。这两种代码之间有区别吗?_Python_In Operator - Fatal编程技术网

python:if-in操作符。这两种代码之间有区别吗?

python:if-in操作符。这两种代码之间有区别吗?,python,in-operator,Python,In Operator,这两种代码有区别吗 if x in array[j] and array[j].index(x) == 0: 以及 我如何解释这两个代码 例如,它将是 ‘r’、‘b’、‘rbrb’ 或 “brbrbbbrrrbbb”、“brbrbrrrbrbrbrbrbrbrbrbrbrbrbbb”、“brbrbrbrbrrrbbb”、“brbrbrbrbrbrbrrrb”, “brbbbrbbbrb” 整个代码如下所示: array = [] for i in range(3): x = input

这两种代码有区别吗

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

我如何解释这两个代码

例如,它将是

‘r’、‘b’、‘rbrb’

“brbrbbbrrrbbb”、“brbrbrrrbrbrbrbrbrbrbrbrbrbrbbb”、“brbrbrbrbrrrbbb”、“brbrbrbrbrbrbrrrb”, “brbbbrbbbrb”

整个代码如下所示:

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:

但是使用flag=False和

if x in listA[j]:

如果可能的话,我应该学习什么来获得对这个问题的更多理解


谢谢你的帮助

你的问题的答案是,这两种代码之间的差异完全不同

你应该学会从概念上分解事物。所以你明白了:

if x in listA:
但不是:

if x in listA[j]:
那么这个呢

listB = listA[j]
if x in listB
答案是listA是一个事物列表。根据您的代码和您尝试执行的操作,这些内容会有所不同。在本例中,listA中的内容也是列表。上面的代码块演示了这一点。您可以从listA中拉出位置“j”处的列表,然后像使用其他列表一样使用它。它碰巧来自另一个列表中并不重要。这就是分解事物的概念:某个变量[某个索引]是一个概念,某个列表中的某个变量是另一个概念。编程就是以这种方式将事物结合起来

因此:

if x in array[j] and array[j].index(x) == 0:
表明array[j]是一个列表,x是您可以在该列表中找到的内容。类似地,由于数组[j]是一个列表,因此可以对其调用.index()。这段代码根本没有说明什么是x。它只是一些可以放在列表中的东西

if array[j] in x and x.index(array[j]) == 0:
这表明x是一个列表,array[j]可能在该列表中。你只是颠倒了这两件事的角色。重要的是要认识到,x数组[j]通常可以是同一个对象。只是在x的情况下,您直接引用了该对象,而在数组[j]的情况下,您将该对象从列表中拉出


顺便说一句,我一直在说“列表”来保持简单。更准确地说,每当我说“list”时,我指的是一种Python序列类型,它具有“第一项、第二项等”的概念。任何数量的东西,包括您自己定义的对象,都可以是序列类型,因此就是我们上面说的“list”时所说的序列类型。对于这样的代码,您通常处理的是一个“列表”,有时是一个“元组”,它只是一个无法修改的“列表”。

您的问题的答案是,这两个代码之间的差异完全不同

你应该学会从概念上分解事物。所以你明白了:

if x in listA:
但不是:

if x in listA[j]:
那么这个呢

listB = listA[j]
if x in listB
答案是listA是一个事物列表。根据您的代码和您尝试执行的操作,这些内容会有所不同。在本例中,listA中的内容也是列表。上面的代码块演示了这一点。您可以从listA中拉出位置“j”处的列表,然后像使用其他列表一样使用它。它碰巧来自另一个列表中并不重要。这就是分解事物的概念:某个变量[某个索引]是一个概念,某个列表中的某个变量是另一个概念。编程就是以这种方式将事物结合起来

因此:

if x in array[j] and array[j].index(x) == 0:
表明array[j]是一个列表,x是您可以在该列表中找到的内容。类似地,由于数组[j]是一个列表,因此可以对其调用.index()。这段代码根本没有说明什么是x。它只是一些可以放在列表中的东西

if array[j] in x and x.index(array[j]) == 0:
这表明x是一个列表,array[j]可能在该列表中。你只是颠倒了这两件事的角色。重要的是要认识到,x数组[j]通常可以是同一个对象。只是在x的情况下,您直接引用了该对象,而在数组[j]的情况下,您将该对象从列表中拉出


顺便说一句,我一直在说“列表”来保持简单。更准确地说,每当我说“list”时,我指的是一种Python序列类型,它具有“第一项、第二项等”的概念。任何数量的东西,包括您自己定义的对象,都可以是序列类型,因此就是我们上面说的“list”时所说的序列类型。对于这样的代码,您通常处理的是一个“列表”,或者有时是一个“元组”,它只是一个无法修改的“列表”。

是的,这是有区别的<代码>“foobar”中的“foo”为真<代码>“foo”中的“foobar”为False<中的code>是不可交换的。这是你写的吗?如果不是,那就不值得再看了:这是一个值得学习的非常糟糕的例子。假设我们有两个案例<代码>“苹果商店”中的“苹果”和[“苹果”]中的“苹果”。你可以从这个开始。是的,有区别<代码>“foobar”中的“foo”为真<代码>“foo”中的“foobar”为False<中的code>是不可交换的。这是你写的吗?如果不是,那就不值得再看了:这是一个值得学习的非常糟糕的例子。假设我们有两个案例<代码>“苹果商店”中的“苹果”和[“苹果”]中的“苹果”。你可以从这个开始。我对你慷慨的解释感激不尽!的确是这样