【问题标题】:How to refer to a specific object in a list, not all the objects that are the same value but different? [duplicate]如何引用列表中的特定对象,而不是所有值相同但不同的对象? [复制]
【发布时间】:2022-10-08 05:35:38
【问题描述】:

例如,mylist = [0,1,2,0] 我希望 mylist[0] == mylist[-1] 输出 False 因为它是 0 的不同实例,但这是真的,因为它们都是零。有没有办法做到这一点?

【问题讨论】:

  • 0 不是一个类。没有“0的不同实例”这样的说法。根据 Python 的小整数池优化,它们甚至是同一个对象。
  • 听起来您想比较索引,而不是那些索引的值。
  • 可以使用is来检查是否是同一个对象;但在这种情况下,0 的两次出现实际上是同一个对象。请查看链接的副本。

标签: python


【解决方案1】:

在您的情况下,mylist[0]mylist[-1] 不仅相等而且相同(内存中的相同对象)

>>> mylist = [0,1,2,0]
>>> mylist[0] == mylist[-1]
True
>>> mylist[0] is mylist[-1]
True
>>> id(mylist[0])
140736735811200
>>> id(mylist[-1])
140736735811200
>>> 

您不应该收到False

您可以阅读这些文章以更好地理解该主题: https://realpython.com/python-is-identity-vs-equality/, https://anvil.works/articles/pointers-in-my-python-1

【讨论】:

    【解决方案2】:

    我猜你想比较值和它们的索引。

    mylist = [0,1,2,3,0]
    if mylist[0] == mylist[-1] and mylist.index(mylist[0]) == mylist.index(mylist[-1]):
        print(“True”)
    else:
        print(“False”)   
    

    【讨论】:

      【解决方案3】:

      听起来您想比较索引而不是这些索引处的值。

      此代码通过忽略容器来执行此操作:

      def compare(container, index1, index2):
          return index1 == index2
      
      mylist = [0,1,2,0]
      print(compare(mylist, 0, -1))
      

      输出:

      False

      【讨论】:

        猜你喜欢
        • 2019-05-26
        • 1970-01-01
        • 2012-08-13
        • 1970-01-01
        • 1970-01-01
        • 2014-07-01
        • 1970-01-01
        • 2018-01-17
        相关资源
        最近更新 更多