【问题标题】:How do I merge a tuple or convert a list to a tuple?如何合并元组或将列表转换为元组?
【发布时间】:2011-07-26 23:02:52
【问题描述】:

我有一个元组 INSTALLED_APPS,我想将额外的项目合并到其中,以便在不更改主设置文件的情况下也将我的本地应用程序放入元组中。我走了这么远:

DEFAULT_APPS = list(INSTALLED_APPS)
MY_APPS_LIST = DEFAULT_APPS.append('south')

但是,如果我尝试通过运行再次将其转换为元组:

INSTALLED_APPS = tuple(MY_APPS_LIST)

我明白了:

TypeError: 'NoneType' object is not iterable

我想说这个问题相当基本,但我真的找不到“the”方法,甚至根本找不到任何适合我的方法......我确实发现 list() 和 tuple () 在 Django shell 返回该类型的空对象,所以我不明白 TypeError 可能来自哪里......

帮助表示赞赏!

【问题讨论】:

  • 感谢所有正确答案!Isbadawi 是第一个,所以我会接受他的回答,但也感谢大家提供背景信息!

标签: python django merge append


【解决方案1】:

append 不会返回新列表——它会修改原始列表,返回None。你要MY_APPS_LIST = DEFAULT_APPS + ['south']

【讨论】:

    【解决方案2】:

    list 方法就地运行,因此返回None。如果您想将另一个元素添加到现有列表并仅返回结果,则只需添加它们即可。

    MY_APPS_LIST = DEFAULT_APPS + ['south']
    

    【讨论】:

      【解决方案3】:

      注意,可以使用+ 连接元组,所以如果INSTALLED_APPS 是一个元组:

      INSTALLED_APPS = DEFAULT_APPS + ('south',)
      

      INSTALLED_APPS 将是一个以'south' 作为最后一个元素的元组

      【讨论】:

        【解决方案4】:

        list.append 方法不会返回您附加到的列表。这是一种就地方法。你应该这样做

        DEFAULT_APPS = list(INSTALLED_APPS)
        DEFAULT_APPS.append('south')
        MY_APPS_LIST = DEFAULT_APPS
        

        【讨论】:

        • 这也将“南”添加到 DEFAULT_APPS。从这个问题中不清楚这是否是可取的。
        • 没关系。答案与其他所有答案一样正确。谢谢。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-05-03
        • 2015-02-13
        • 1970-01-01
        • 2014-06-10
        • 2020-10-10
        • 2011-07-27
        • 1970-01-01
        相关资源
        最近更新 更多