有一个清单:
x=['s',2,'3',4,5,6]
Run Code Online (Sandbox Code Playgroud)
我可以像这样打印:
for i in x:
print i
Run Code Online (Sandbox Code Playgroud)
但是,正如我已经发现的那样,使用一个print语句会更快一些,就像这样(以下是我到达这一点的方法):
print "\n".join( i.__class__==string and i or str(i) for i in x )
Run Code Online (Sandbox Code Playgroud)
鉴于我想使用第二个选项,我希望输出类似(我还想包括一个计数器):
v1: s v2: 2 v3: 3 etc
这是我尝试过的:
1)
count=0
print (("v"+str(++count)).join(":%s "% i for i in x ) )
Run Code Online (Sandbox Code Playgroud)
结果是::s, v0:2, v0:3, v0:4, v0:5, v0:6, 真的不是我的目标.
a)str(++ count)什么都不打印,count ++给出了synthax错误
b)首先v无处可寻,因为join在这种情况下添加分隔符并且不需要第一个元素
2)
print ( ["v"+str(++count)+ ":%s, "% i for i in x ] )
Run Code Online (Sandbox Code Playgroud)
给予['v0:s, ', 'v0:2, ', 'v0:3, ', 'v0:4, ', 'v0:5, ', 'v0:6, ']更好,但仍然没有counter,我不希望[]被展示
3) 抓取所有并重新启动:
print ",".join(i for i in x )
Run Code Online (Sandbox Code Playgroud)
不能连接string,int所以它变成:
print ",".join(i.__class__==string and i or str(i) for i in x )
Run Code Online (Sandbox Code Playgroud)
这使:
s,2,3,4,5,6
Run Code Online (Sandbox Code Playgroud)
这就是我被困住的地方.
我建议使用enumerate:
x = ['s',2,'3',4,5,6]
print ', '.join('v{}: {}'.format(v, i) for v, i in enumerate(x))
# v0: s, v1: 2, v2: 3, v3: 4, v4: 5, v5: 6
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
20339 次 |
| 最近记录: |