用于创建文本项列表的pythonic成语是什么?

时间:2017-04-15 21:51:38

标签: python string list initialization

我经常会将常量文本值列表放入列表中。我当然不想自己输入很多逗号和引号!

我已经确定了这个习惯用法:使用三引号创建一个多行字符串,每行包含一个文本条目,从而创建一个字符串常量,其中包含换行符(从我按下时),然后我拆分换行并删除字符串的第一行和最后一行是空白的(只是换行符):

colors = """
black
brown
Salmon
red
Orange Red
Dark Goldenrod
Dark Olive Green
Chartreuse
navy
blue
Deep Pink
Dark Violet
""".split("\n")[1:-1]

有人有更好的方式吗?

4 个答案:

答案 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')

然后你避免列表中有任何空白条目。