我是python的新手,我需要创建一个列表并用数据填充它。 等。
list = [ { 1: "first",2:"second"} , { i:"first",ii:"second" } ]
考虑创建用于优化的宏。 等。
#define english { 1: "first",2:"second"}
#define roman { i:"first",ii:"second" }
list = [ english, roman ]
无论如何都要在这里创建类似宏的功能吗?
函数没有解决问题,因为它会调用函数但我需要代码替换。
答案 0 :(得分:0)
足够简单:
english = { 1: "first",2:"second"}
roman = {"i": "first","ii":" second"}
# NB : don't use "list" as variable name,
# it would shadow the builtin `list` type
langs = [english, roman]
答案 1 :(得分:0)
在您的情况下,您应该只创建2个单独的词典并将它们放在列表中
english = {1: "first",2: "second"}
roman = {"i": "first","ii": "second"}
li = [english, roman]
我使用li因为list是python中的保留字 罗马数字周围的引号是因为我和ii都没有定义变量,所以最好使用字符串
答案 2 :(得分:0)
以python模块cogapp
模块的形式存在一个非常好的解决方案。
下面是一个示例macro_test.py
:
#define english { 1: "first",2:"second"}
#define roman { i:"first",ii:"second" }
#[[[cog
# import cog
# english = { 1 : "first", 2 : "second" }
# roman = { "i" : "first", "ii" : "second" }
# cog.outl("mylist = [ {0!r}, {1!r} ]".format(english, roman))
#
# ## something actually usefull:
# import os
# git_command = "git log --pretty=format:'%H' -n 1"
# release_git_version = os.popen(git_command).read()
# ## Note how release_git_version string contains quote char at start and at the end
# cog.outl("release_git_version = {}".format(release_git_version))
#]]]
#[[[end]]]
print("mylist = {}".format(mylist))
print("release_git_version = {}".format(release_git_version))
然后您像这样运行预处理器:
python -m cogapp -r macro_test.py
由于-r
选项macro_test.py
,源被重写为:
#define english { 1: "first",2:"second"}
#define roman { i:"first",ii:"second" }
#[[[cog
# import cog
# english = { 1 : "first", 2 : "second" }
# roman = { "i" : "first", "ii" : "second" }
# cog.outl("mylist = [ {0!r}, {1!r} ]".format(english, roman))
#
# ## something actually usefull:
# import os
# git_command = "git log --pretty=format:'%H' -n 1"
# release_git_version = os.popen(git_command).read()
# ## Note how release_git_version string contains quote char at start and at the end
# cog.outl("release_git_version = {}".format(release_git_version))
#]]]
mylist = [ {1: 'first', 2: 'second'}, {'i': 'first', 'ii': 'second'} ]
release_git_version = '340b5c2f85c7070f236161d14db07a74ab9abdcb'
#[[[end]]]
print("mylist = {}".format(mylist))
print("release_git_version = {}".format(release_git_version))
对于代码生成非常有用。现在,当您运行macro_test.py
脚本时,将显示正确的输出:
>python macro_test.py
mylist = [{1: 'first', 2: 'second'}, {'i': 'first', 'ii': 'second'}]
release_git_version = 340b5c2f85c7070f236161d14db07a74ab9abdcb
我添加了release_git_version
代码位以显示有用性,因为其他答案试图将这个问题视作废话。
请注意,生成这样的代码不是优化性能的正确方法。 Python解释器仍然需要解析生成的代码。如果您使用的是CPython,那么通常可以通过在C / C ++中重新实现瓶颈代码来实现优化。
cogapp
也可以与其他语言(XML或JSON)的代码配合使用。更多详细信息,请参见here。