from IPython.display import Image, display
for i in range(1, 4):
if i == 1:
display(Image(url='http://img3.douban.com/view/photo/thumb/public/p946773286.jpg'))
elif i == 2:
display(Image(url='http://img3.douban.com/view/photo/thumb/public/p946773315.jpg'))
else:
display(Image(url='http://img3.douban.com/view/photo/thumb/public/p946773327.jpg'))
from IPython.display import HTML, display
imgs = []
for i in [2, 0, 1, 3]:
imgs.append('<img src="http://gelbooru.com/counter/%d.gif">' % i)
display(HTML(''.join(imgs)))
def show_number(x):
ds = []
while True:
ds.append(x % 10)
x = x / 10
if x == 0:
break
imgs = []
for i in reversed(ds):
imgs.append('<img src="http://gelbooru.com/counter/%d.gif">' % i)
display(HTML(''.join(imgs)))
for i in range(100, 110):
prime = True
for j in range(2, i - 1):
if i % j == 0:
prime = False
break
if not prime:
continue
show_number(i)
from IPython.display import HTML, display
img = '<img src="http://gelbooru.com/counter/%d.gif">'
display(HTML(''.join([img % i for i in range(10)])))
from IPython.display import HTML, display
img = '<img src="http://gelbooru.com/counter/%d.gif">'
display(HTML(''.join([img % i for i in range(10) if i % 2 == 0])))
字典也可以推导(字典推导, dict comprehension):
print {a: b for a, b in [(1, 'one'), (2, 'two')]}
{1: 'one', 2: 'two'}
生成器也是一种序列.
print type(1), type(2.0), type('foo')
print type(i for i in range(10))
<type 'int'> <type 'float'> <type 'str'> <type 'generator'>
from IPython.display import HTML, display
img = '<img src="http://gelbooru.com/counter/%d.gif">'
display(HTML(''.join(img % i for i in range(3))))
这种序列可以是无限长的:
def natural_number():
i = 0
while True:
yield i
i += 1
for i, _ in zip(natural_number(), range(10)):
print i
0 1 2 3 4 5 6 7 8 9
def even_number():
return (i for i in natural_number() if i % 2 == 0)
print zip(even_number(), range(3))
[(0, 0), (2, 1), (4, 2)]
注意元组的括号里必需至少有一个逗号. 如果小括号里没有逗号, 就仅仅表示一种优先级.
与生成器不同, 表推导没有延迟计算的性质, 不能生成无限长序列(使用菜单里的Kernel > Interrupt中断程序):
def even_number():
return [i for i in natural_number() if i % 2 == 0]
print zip(even_number(), range(3))