解释python构造

2024-09-28 19:26:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我在“tups”中有一个元组列表,并应用了以下代码进行筛选。元组列表的格式为[(floata,stra1,stra2),(floatb,strb1,strb2),...etc]

keys=sorted({t[2] for t in tups}) 
for key in keys:     
    group=filter(lambda t: t[2]==key,tups)     
    print '{}:\n\tmax: {}\n\tmin: {}'.format(key,max(group),min(group))

起初我认为花括号是个错误,于是把它们改成了方括号。我没有得到一个语法错误,但代码没有工作。万不得已,我把括号换了回来,一切都很好。有人能解释一下结构吗。这是字典吗?文档中对此有何解释?你知道吗


Tags: key代码in列表for格式groupkeys
2条回答

在Python 2.6之前,您应该使用:

print '%s:\n\tmax: %s\n\tmin: %s' % (key,max(group),min(group))

使用占位符格式化字符串(%s)。你知道吗

从Python2.6开始,可以对占位符和.format使用{}语法:

print '{}:\n\tmax: {}\n\tmin: {}'.format(key,max(group),min(group))

或使用位置参数:

print '{0}:\n\tmax: {2}\n\tmin: {1}'.format(key,min(group),max(group))

(注意,我更改了参数的顺序,但是输出是相同的:我们使用{2}表示第三个参数……)

只是一个建议:当你有很多争论的时候,把它们命名为:

print '{key}:\n\tmax: {groupmax}\n\tmin: {groupmin}'.format(key=key,groupmin=min(group),groupmax=max(group))

.format语法比%语法更强大:示例可在documentation中找到。你知道吗

如果你指的是第一行中的花括号,this is a set comprehension。这将从tups中的每个元组创建一组第三项。集合类似于列表,但没有顺序,因此不能包含重复项。你知道吗

如果您指的是字符串中的括号,那么这就是new-style string formatting。调用str.format()将这些大括号更改为传递的值。你知道吗

相关问题 更多 >