1

我有两个清单

l1= [1,2,3,4,5,6,7]
l2 = [1,2,3,4,5,6,7,8,9,77,66,]

我想在同一行显示它们

"list1 text"  "list2 text"

l1-1   , l2-1
l1-2   , l2-2

等等

这样如果列表元素完成,那么它应该""在它前面显示空白,但另一边显示它自己的元素,如

for a,b in l1,l2
     <td>a</td><td> b </td>
4

7 回答 7

4

您可以使用izip_longest一个fillvalue空格,

>>> from itertools import izip_longest
>>> for a,b in izip_longest(l1,l2,fillvalue=' '):
...     print a,b
... 
1 1
2 2
3 3
4 4
5 5
6 6
7 7
  8
  9
  77
  66
于 2013-04-26T06:17:26.603 回答
3

像这样的东西?

from itertools import izip_longest
l1= [1,2,3,4,5,6,7]
l2 = [1,2,3,4,5,6,7,8,9,77,66,]

for a,b in izip_longest(l1,l2, fillvalue=''):
    print '"'+str(a)+'"','"'+str(b)+'"'

出去:

"1" "1"
"2" "2"
"3" "3"
"4" "4"
"5" "5"
"6" "6"
"7" "7"
"" "8"
"" "9"
"" "77"
"" "66"
于 2013-04-26T06:17:39.687 回答
1
l1= [1,2,3,4,5,6,7]
l2 = [1,2,3,4,5,6,7,8,9,77,66]
maxlen = max(len(l1),len(l2))
l1_ext = l1 + (maxlen-len(l1))*[' ']
l2_ext = l2 + (maxlen-len(l2))*[' ']
for (a,b) in zip(l1_ext,l2_ext):
    print a,b
于 2013-04-26T08:32:11.693 回答
1
>>>l1= [1,2,3,4,5,6,7]
>>l2 = [1,2,3,4,5,6,7,8,9,77,66,]
>>>n = ((a,b) for a in l1 for b in l2)
>>>for i in n:
       i

有关更多详细信息,请通过此链接: Python 的隐藏功能

于 2013-04-26T06:43:49.310 回答
1
>>> l1= [1,2,3,4,5,6,7]
>>> l2 = [1,2,3,4,5,6,7,8,9,77,66,]
>>> def render_items(*args):
...     return ''.join('<td>{}</td>'.format('' if i is None else i) for i in args)
... 
>>> for item in map(render_items, l1, l2):
...     print item
... 
<td>1</td><td>1</td>
<td>2</td><td>2</td>
<td>3</td><td>3</td>
<td>4</td><td>4</td>
<td>5</td><td>5</td>
<td>6</td><td>6</td>
<td>7</td><td>7</td>
<td></td><td>8</td>
<td></td><td>9</td>
<td></td><td>77</td>
<td></td><td>66</td>
于 2013-04-26T06:44:06.200 回答
1
l1= [1,2,3,4,5,6,7]
l2 = [1,2,3,4,5,6,7,8,9,77,66]
for (a,b) in map(lambda a,b:(a or ' ',b or ' '), l1, l2):
    print a,b
于 2013-04-26T08:38:49.260 回答
1

Itertools.izip_longest可用于组合两个列表,值 None 将用作较短列表中“缺失”项目的占位符值。

于 2013-04-26T06:18:19.420 回答