在循环中生成备用切换值的最佳方法? [英] Best way to generate alternate toggling values in a loop?

查看:59
本文介绍了在循环中生成备用切换值的最佳方法?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在编写这个小Python程序,它将从

数据库中提取值并生成一些XHTML。


我正在生成一个< tablewhere我希望替代< tr>'是
< tr class ="偶数>



< tr class =" Odd">


最好的方法是什么?


我写了一个小发生器(代码片段如下)。有更好的

(更多Pythonic)方式吗?

#代码开始


def evenOdd ():

values = [" Even",Odd]

state = 0

而True:

收益率值[state]

state =(state + 1)%2

#Snippet


trClass = evenOdd()

stringBuffer = cStringIO.StringIO()


为id,结果中的名字:

stringBuffer.write(' '''''

< tr class ="%s">

< td>%d< / td>

< td>%s< / td>

< / tr>

''''''



(trClass.next(),id,name))

#代码结束

I''m writing this little Python program which will pull values from a
database and generate some XHTML.

I''m generating a <tablewhere I would like the alternate <tr>''s to be

<tr class="Even">
and
<tr class="Odd">

What is the best way to do this?

I wrote a little generator (code snippet follows). Is there a better
(more "Pythonic") way to do this?
# Start of Code

def evenOdd():
values = ["Even", "Odd"]
state = 0
while True:
yield values[state]
state = (state + 1) % 2
# Snippet

trClass = evenOdd()
stringBuffer = cStringIO.StringIO()

for id, name in result:
stringBuffer.write(''''''
<tr class="%s">
<td>%d</td>
<td>%s</td>
</tr>
''''''
%
(trClass.next(), id, name))
# End of Code

推荐答案

在2007年10月17日星期三23:55 +0000,Debajit Adhikary写道:
On Wed, 2007-10-17 at 23:55 +0000, Debajit Adhikary wrote:

我正在写这个小Python程序从

数据中提取值基础并生成一些XHTML。


我正在生成一个< tablewhere我希望替代< tr>'是$

< tr class ="偶数">



< tr class =" Odd">


最好的方法是什么?


我写了一个小生成器(代码片段如下)。还有更好的

(更多Pythonic)方式吗?


#代码开头


def evenOdd():

values = [" Even",Odd]

state = 0

而True:

收益率值[州]

州=(州+ 1)%2


#Snippet


trClass = evenOdd()

stringBuffer = cStringIO.StringIO()


代表id,结果中的名字:

stringBuffer.write('''''''

< tr class ="%s">

< td>%d< / td> ;

< td>%s< / td>

< / tr>

''''''



(trClass.next(),id,name))
I''m writing this little Python program which will pull values from a
database and generate some XHTML.

I''m generating a <tablewhere I would like the alternate <tr>''s to be

<tr class="Even">
and
<tr class="Odd">

What is the best way to do this?

I wrote a little generator (code snippet follows). Is there a better
(more "Pythonic") way to do this?
# Start of Code

def evenOdd():
values = ["Even", "Odd"]
state = 0
while True:
yield values[state]
state = (state + 1) % 2
# Snippet

trClass = evenOdd()
stringBuffer = cStringIO.StringIO()

for id, name in result:
stringBuffer.write(''''''
<tr class="%s">
<td>%d</td>
<td>%s</td>
</tr>
''''''
%
(trClass.next(), id, name))



这是一个值得尊敬的第一次尝试,但我建议你用itertools模块自己熟悉
。它有很多有用的工具,可以让你的代码更加优雅和简洁。


我会给你提示,而不是拼写出最后的结果。 :看看

itertools.cycle和itertools.izip。


HTH,


-

Carsten Haese
http://informixdb.sourceforge.net


2007-10-17,Debajit Adhikary< de ****** @ gmail.comwrote:
On 2007-10-17, Debajit Adhikary <de******@gmail.comwrote:

#代码开头


def evenOdd():

values = [" Even"," Odd"]

state = 0

而True:

收益率值[州]

州=(州+ 1)%2
# Start of Code

def evenOdd():
values = ["Even", "Odd"]
state = 0
while True:
yield values[state]
state = (state + 1) % 2



我会用
替换最后一行

state ^ = 1


保存一些指令,但我花了太多时间

使用麦克风在时钟上运行的oroprocessors以

KHz测量。


可能还有其他更多的Pythonic方式...


-

格兰特爱德华兹格兰特哇!我的EARS已经过去了!



visi.com

I''d replace the last line with

state ^= 1

to save a couple instructions, but I spend too much time
working with micoroprocessors running on clocks measured in the
KHz.

There are probably other more Pythonic ways...

--
Grant Edwards grante Yow! My EARS are GONE!!
at
visi.com


10月18日,上午1:55, Debajit Adhikary< debaj ... @ gmail.comwrote:
On Oct 18, 1:55 am, Debajit Adhikary <debaj...@gmail.comwrote:

我正在编写这个小Python程序,它将从
$ b中提取值$ b数据库并生成一些XHTML。


我正在生成一个< tablewhere我希望替换< tr>'是

< tr class =" Even">



< tr class =" Odd">


最好的方法是什么?
I''m writing this little Python program which will pull values from a
database and generate some XHTML.

I''m generating a <tablewhere I would like the alternate <tr>''s to be

<tr class="Even">
and
<tr class="Odd">

What is the best way to do this?



来自itertools import izip


def toggle( start = True):

flag = start

而1:

flag = not flag

yield flag

CSS =(" even",odd)


HTML =''< tr class ="%s">< td>%d< / td>< td>%s< / td>< / tr>''


结果= [(1,''开e''),(2,''two''),(3,''Three''),(4,''Four''),(5,

''Five' ')]


for flag,(id,name)in izip(toggle(),result):

print HTML%(CSS [flag], id,name)

< tr class =" even">< td> 1< / td>< td> One< / td>< / tr>

< tr class =" odd">< td> 2< / td>< td> 2< / td>< / tr>

< tr class =" even">< td> 3< / td>< td>三< / td>< / tr>

< tr class =" odd">< ; td> 4< / td>< td>四< / td>< / tr>

< tr class =" even">< td> 5< / td> < td>五< / td>< / tr>


from itertools import izip

def toggle(start=True):
flag = start
while 1:
flag = not flag
yield flag
CSS = ("even", "odd")

HTML = ''<tr class="%s"><td>%d</td><td>%s</td></tr>''

result = [(1, ''One''), (2, ''two''), (3, ''Three''), (4, ''Four''), (5,
''Five'')]

for flag, (id, name) in izip(toggle(), result):
print HTML % (CSS[flag], id, name)
<tr class="even"><td>1</td><td>One</td></tr>
<tr class="odd"><td>2</td><td>two</td></tr>
<tr class="even"><td>3</td><td>Three</td></tr>
<tr class="odd"><td>4</td><td>Four</td></tr>
<tr class="even"><td>5</td><td>Five</td></tr>


这篇关于在循环中生成备用切换值的最佳方法?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆