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

时间:2017-07-18 18:48:31

标签: python for-loop tuples enumerate

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

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

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

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

我不熟悉编码(更不用说Python了),而且我从来没有对循环有过特殊的倾向,但我很确定我需要使用枚举()从每个嵌套元组中提取第0个条目,并将它们放在一个新的(?)元组中。这是我的代码...

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

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

2 个答案:

答案 0 :(得分:0)

在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')

答案 1 :(得分:0)

你可以从任何迭代构造一个元组,如下所示:

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

的更多信息