gpt4 book ai didi

python - 如何获取列表名称以进行比较

转载 作者:太空宇宙 更新时间:2023-11-04 01:06:58 25 4
gpt4 key购买 nike

这听起来可能有点滑稽,但这就是我想做的:我有两个列表:myList1myList2。我将这些列表传递给一个函数,该函数将根据收到的列表执行特定任务(即,基于列表的名称,而不是内容)。

def listProcessor(data):
if data == 'myList1':
perform task1
else: #meaning data is myList2
perform task 2

Python 3 中有没有一种方法可以查询列表(或元组、字典等)的名称并进行这样的比较?显然,我在这里做的方式是行不通的,因为它将列表“数据”的内容与单个字符串“myList1”进行比较,这是行不通的! :-).

最佳答案

有几种方法可以做到这一点:

  1. 如果每个列表需要完成的工作确实是完全独立的,您可以创建单独的函数。

  2. 您可以将函数更新为:

    1. 以两个列表作为参数:

      def list_processor(list1=None, list2=None):
      if list1:
      # do stuff for list1
      if list2:
      # do stuff for list2
    2. 您可以添加一个额外的标志,标识要执行的操作类型,并设置一个默认值:

      def list_processor(some_list=None, type_of_list=1):
      if type_of_list == 1:
      # do stuff with some_list as if it was list1
      if type_of_list == 2:
      # do stuff with some_list as if it was list2

出于各种原因,您不想做您最初提议的事情。一个关键原因是,在 Python 中,您可能在其他语言中称为变量的东西并不是“放东西的盒子”(大多数教科书都提到它们)。

在 Python 中,变量实际上只是指向对象的名称。关键是多个名称可以指向同一个对象;如果您依赖列表“名称”,这很容易混淆您的功能。

这是一个例子:

>>> a = [1,2,3]
>>> b = a
>>> b.append('hello')
>>> b is a
True
>>> b == a
True
>>> b
[1, 2, 3, 'hello']
>>> a
[1, 2, 3, 'hello']

在此示例中,ab 都指向相同的列表对象。您对 a 所做的操作会影响 b

关于python - 如何获取列表名称以进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29873676/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com