如何构建 FOR 循环以简化嵌套元组

How to structure FOR loop to simplify nested tuple

在我正在编写的 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中可以这样写:

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

从元组中获取单个值。您可以在 for 循环中做同样的事情。在你的例子中,每个元组只有一个值,所以你只需要在左侧有一个变量。 (注意逗号!)

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

for item, in stuff:
    print(item)

# Output:
# foo
# bar
# baz
# spam
# eggs

编辑

根据评论,改为将项目放入元组中:

values = tuple(item for item, in stuff)
print(values)

# Output:
# ('foo', 'bar', 'baz', 'spam', 'eggs')

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

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