【问题标题】:How to structure FOR loop to simplify nested tuple [duplicate]如何构造 FOR 循环以简化嵌套元组 [重复]
【发布时间】:2017-07-18 18:48:31
【问题描述】:

在我正在编写的 Python 脚本中,我有一个函数只能在嵌套元组中输出其结果,如下所示:

(('foo',), ('bar',), ('baz',), ('spam',), ('eggs',))

我需要构造一个 FOR 循环,以便我可以像这样使用元组(作为不变性的元组,而不是单个字符串):

('foo', 'bar', 'baz', 'spam', 'eggs')

我是编码新手(更不用说 Python),而且我从来没有特别喜欢循环,但我很确定我需要使用 enumerate() 来提取第 0 个条目从每个嵌套的元组中,并将它们放入一个新的(?)元组中。这是我的代码...

for count,item in enumerate(tuple):
    s = item[0]
    item = tuple[count]

任何帮助或建议将不胜感激!

【问题讨论】:

  • 这类问题有很多重复。

标签: python for-loop tuples enumerate


【解决方案1】:

您可以从任何可迭代对象构造元组,如下所示:

tuples = (('foo',), ('bar',), ('baz',), ('spam',), ('eggs',))
values = tuple(t[0] for t in tuples)
print(values)
# -> ('foo', 'bar', 'baz', 'spam', 'eggs')

Python 中的tuple 是不可变的。 如果您需要一个可变集合,请使用list。

为此,您可以使用理解列表:

values = [t[0] for t in tuples]
print(values)
# -> ['foo', 'bar', 'baz', 'spam', 'eggs']

查阅在线文档,了解更多关于数据结构和List Comprehensions

【讨论】:

    【解决方案2】:

    在 Python 中,你可以这样写:

    a, b = ('some', 'tuple')
    

    从元组中获取单个值。您可以在 for 循环中执行相同的操作。在您的情况下,每个元组只有一个值,因此您只需要左侧的一个变量。 (注意逗号!)

    stuff = (('foo',), ('bar',), ('baz',), ('spam',), ('eggs',))
    
    for item, in stuff:
        print(item)
    
    # Output:
    # foo
    # bar
    # baz
    # spam
    # eggs
    

    编辑

    根据 cmets,将项目放入元组中:

    values = tuple(item for item, in stuff)
    print(values)
    
    # Output:
    # ('foo', 'bar', 'baz', 'spam', 'eggs')
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-26
      • 1970-01-01
      • 1970-01-01
      • 2016-05-03
      • 2012-06-23
      • 2020-01-14
      • 2021-11-17
      • 2020-07-06
      相关资源
      最近更新 更多