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