我经常会将常量文本值列表放入列表中。我当然不想自己输入很多逗号和引号!
我已经确定了这个习惯用法:使用三引号创建一个多行字符串,每行包含一个文本条目,从而创建一个字符串常量,其中包含换行符(从我按下时),然后我拆分换行并删除字符串的第一行和最后一行是空白的(只是换行符):
colors = """
black
brown
Salmon
red
Orange Red
Dark Goldenrod
Dark Olive Green
Chartreuse
navy
blue
Deep Pink
Dark Violet
""".split("\n")[1:-1]
有人有更好的方式吗?
答案 0 :(得分:1)
在评论中添加@talkaboutquality请求的答案。配置文件的内容非常简单,我通过假设在更大的项目中(即使它仅适用于您的学生)提出了这个建议,通过一长串参数实际上是不洁净/杂乱的作为源代码中的字符串。所以我的建议很简单:
#content of config.txt
black
brown
Salmon
red
Orange Red
Dark Goldenrod
Dark Olive Green
Chartreuse
navy
blue
Deep Pink
Dark Violet
现在,从您的python代码
fn=open("config.txt");
lines=fn.readlines();
colors=[x.strip() for x in lines];
当然,您可以将这三行代码封装在loadColor(fn)
这样的函数中,这样可以让您的学生清楚地了解这一行。这样,您可以添加/删除颜色,而无需修改源代码。我认为这主要是基于意见的,也许我刚刚从C ++项目中习惯了这个习惯,其中包含键/值或脚本(例如 lua脚本)形式的配置文件让生活更轻松。
答案 1 :(得分:1)
除了列表初始化程序之外,没有官方或非官方的“习语”。它的可读性(Python的目标之一是可读性)在一般情况下不需要任何其他代码可理解性的目的。
如果这对你来说不够好,请随意使用你能想到的更方便的东西。一些选择:
答案 2 :(得分:0)
这是打印上面列表的另一种选择。
colors = ("black,brown,Salmon,red,Orange Red,Dark Goldenrod,"
"Dark Olive Green,Chartreuse,navy,blue,Deep Pink,Dark Violet"
.split(','))
for color in colors:
print(color)
答案 3 :(得分:0)
最简单的解决方案就是使用空格和.split()。
请注意,如果python字符串是单个括号分组的一部分,它们将自动连接在一起。请参阅以下内容:
colors = ("white blue black red green "
"teal pink orange").split()
print(colors)
['white', 'blue', 'black', 'red', 'green', 'teal', 'pink', 'orange']
如果你的个别字符串中有空格,最好使用另一个字符来分隔它们。我个人喜欢' - '。 EG:
colors = ('white-black-blue-dark orange-chartruse-'
"green-robin's egg blue").split('-')
print(colors)
['white',
'black',
'blue',
'dark orange',
'chartruse',
'green',
"robin's egg blue"]
如果你真的希望每个字符串都在一个单独的行上,为什么不使用三重引号:
'''white
blue
dark orange'''.split('\n')
然后你避免列表中有任何空白条目。