2016-04-14 25 views
0

以下を書き換えるにはどうすればよいでしょうか?ネストされたリストの異なるインデックスに対して異なるアクションを決定できるようにすることです。ネストされたタプルのインデックスで2dタプルを反復する

ネストされたリストは2次元のみであることができますが、トップリストとネストされたリストの長さは任意です。

resulttable = '' 
list2d = [[1,2][3,4]] 
for row in list2d: 
    newrow=u'<tr>' 
    for idx in range(len(row)):if idx=0 .... 
     if idx==0: 
      newrow=newrow+u'<td align="left">'+unicode(row[idx])+u'</td>' 
     else: 
      newrow=newrow+u'<td align="right">'+unicode(row[idx])+u'</td>' 
    resulttable+=newrow + '</tr>' 

答えて

1

あなたのコードをより小さなテスト可能な関数に分割することをお勧めします。それは読んでするよりも、書くこと

def _cell2td(idx, cell): 
    if idx == 0: 
     return u'<td align="left">' + unicode(cell) + u'</td>' 
    return u'<td align="right">' + unicode(cell) + u'</td>' 

def _row2tr(row): 
    tds = [_cell2td(idx, cell) for idx, cell in enumerate(row)] 
    row_repr = u'<tr>' + u''.join(tds) + u'</tr>' 
    return row_repr 

list2d = [[1, 2], [3, 4]] 
trs = map(_row2tr, list2d) 
resulttable = ''.join(trs) 
1

おそらくもっと楽しい:それはこのような何かを見ることができます

list2d = [[1,2],[3,4]] 
resulttable= "" 
for row in list2d: 
    resulttable += "<tr>{}</tr>".format("".join([u'<td align="left">'+unicode(val)+u'</td>' if y == 0 else u'<td align="right">'+unicode(val)+u'</td>' for y, val in enumerate(row)])) 

一行:

resulttable = "".join(["<tr>%s</tr>" % "".join([u'<td align="left">%s</td>' % unicode(val) if y == 0 else u'<td align="right">%s</td>' % unicode(val) for y, val in enumerate(row)]) for row in list2d]) 
関連する問題