如何遍历Python中不同长度的字符串元组列表?
我正在尝试遍历不同长度的元组列表。但是,我只是想弄清楚一些事情。
test_list = [("rock", "paper", "scissors"),("go","fish"),("uno")]
for each_tuple in test_list:
for each_word in each_tuple:
print(each_word)
这打印
rock
paper
scissors
go
fish
u
n
o
什么是我可以使用的解决方案,以便 uno 打印为“uno”而不是单独的字母 uno。我明白为什么会发生这种情况,但我不确定我应该实施什么来“检查”元组中是否只有一个元素与多个元素。
回答
这是 Python 语法中的一个微妙区别。括号有多种用途,您将看到的大多数括号都属于以下三类之一: (1) 表达式括号,如改变算术的优先顺序;(2) 构造元组;(构建生成器)。
test_list = [("rock", "paper", "scissors"),("go","fish"),("uno")]
test_list = [("rock", "paper", "scissors"),("go","fish"),("uno")]
前两对括号有内部逗号:它们显然是元组。然而,第三个更容易被视为一个简单的表达式,所以它的计算结果只是字符串:
test_list = [("rock", "paper", "scissors"),("go","fish"),"uno"]
为了得到你想要的,用一个简单的逗号强制一个单元素元组:
test_list = [("rock", "paper", "scissors"),("go","fish"),("uno", )]
回答
问题是您没有定义正确的元组。你的迭代很好。
但是你有:
当你应该:
test_list = [("rock", "paper", "scissors"),("go","fish"),("uno",)]
注意多余的逗号。没有它,包围“uno”的括号将被有效地忽略,并且“uno”字符串成为迭代的项目,从而产生单个字符。
这只是在 Python 中指定单元素元组的要求。