我有一份表单列表:
items = [["Wello \nWorld", "roboto.ttf", "rgb(0,0,0)"], ["StackOverflow is awesome", "roboto.ttf", "rgb(255,255,255)"]]
我想要做的是回顾每个list
...声明变量text
,font
,color
。之后,如果文本上有\n
个字符,则将文本拆分为行,然后将这些行分隔成单词以对其进行处理。
这是我为实现这一目标而提供的代码。
def wrap(self, size):
for section in sections:
for text, font, color in section:
for line in text.splitlines():
for word in line:
pass
我知道这个功能是错误的。如果没有错,那么世界就错了。这种级别的缩进看起来很丑陋,真的希望你们能帮助我以另一种方式表达它。或者数据可能是错误的结构?
还有一件事:
我从The Zen of Python 读到:
Flat比嵌套好。
这适用于我的问题吗?我打赌它确实如此,但我正在阅读Google Groups上的一些内容,当引用 Flat优于嵌套时,人们倾向于引用Python包和继承层次结构。
答案 0 :(得分:3)
“Flat优于嵌套”指的是保持数据结构简单并避免在另一个中嵌套太多对象。在你的情况下,你有一个列表列表,所以这只是两个不太糟糕的级别。实际上,你有一个三元组的列表(是的,“元组”是一个列表,但它仍然是一个固定的大小),所以它真的没有问题。
由于您只有一个级别,因此只需要一个for循环即可访问该元组。然后您可以解压缩元组以访问这些元素并进一步处理text
:
for section in items:
text, font, color = section
text = text.splitlines()
print(text, font, color)
这会给你:
['Wello ', 'World'] roboto.ttf rgb(0,0,0)
['StackOverflow is awesome'] roboto.ttf rgb(255,255,255)
根据您希望进一步处理这些值的内容,您可能需要再添加一个嵌套来遍历文本行,但这不是问题,所以您可以这样做。