for i in range(1,10):
for j in range(1,i+1):
print('%d*%d=%d'%(j,i,j*i),end="\t")
print()
输出结果:
1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9
1*4=4 2*4=8 3*4=12 4*4=16
1*5=5 2*5=10 3*5=15 4*5=20 5*5=25
1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36
1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49
1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64
1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81
print()
打印函数
print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)
print()
方法用于打印输出,最常见的一个函数。
参数
使用 flush
参数生成一个 Loading
的效果:
import time
print("---RUNOOB EXAMPLE:Loading 效果---")
print("Loading", end="")
for i in range(20):
print(".", end='', flush=True)
time.sleep(0.5)
---RUNOOB EXAMPLE:Loading 效果--- Loading....................
如何将[[[1,2,3], [4,5]]]
全展开为[1,2,3,4,5]
。
from collections.abc import Iterable
def flatten(lst, out_lst=None): # 两个参数分别表示带展开的数组
if out_lst is None:
out_lst = []
for i in lst:
# print(f'i is {i}')
if isinstance(i, Iterable): # 判断i是否可迭代
flatten(i, out_lst) # 尾数递归
else:
out_lst.append(i) # 产生结果
return out_lst # 输出数组
调用函数
>>> print(flatten([[1,2,3],[4,5,6]]))
>>> print(flatten([[1,2,3],[4,5]], [6,7]))
>>> print(flatten([[[1,2,3],[4,5,6]]]))
# 结果:
[1, 2, 3, 4, 5, 6]
[6, 7, 1, 2, 3, 4, 5]
[1, 2, 3, 4, 5, 6]
另外,numpy
里的 flatten
与此有微妙不同,这里是 flatten
是递归版本。
>>> import numpy
>>> b = numpy.array([[1,2,3],[4,5]])
>>> b.flatten()
array([list([1, 2, 3]), list([4, 5])], dtype=object)
b.flatten(order= ' C ')
numpy.ndarray.flatten
返回一份数组拷贝,对拷贝所做的修改不会影响原始数组,
order : {'C', 'F', 'A', 'K'}, optional。'C' -- 按行,'F' -- 按列,'A' -- 原顺序,'K' -- 元素在内存中的出现顺序。
>>> a = numpy.array([[[1,2,3],[4,5,6]]])
>>> print ('原数组:')
>>> print (a)
>>> print ('展开的数组:')
>>> print (a.flatten()) # 默认按行
>>> print ('以 F 风格顺序展开的数组:')
>>> print (a.flatten(order = 'F'))
原数组:
[[[1 2 3]
[4 5 6]]]
展开的数组:
[1 2 3 4 5 6]
以 F 风格顺序展开的数组:
[1 4 2 5 3 6]
from math import ceil
def divide(lst, size):
if size <= 0:
return [lst]
return [lst[i * size:(i+1)*size] for i in range(0, ceil(len(lst) / size))]
ceil(x, /)
返回
的上限的整数。最小的整数
。
>>> lst = [1, 3, 5, 7, 9]
>>> size = 2
>>> ceil(len(lst) / size)
3
>>> r = divide([1, 3, 5, 7, 9], 2)
>>> print(r)
[[1, 3], [5, 7], [9]]
def max_length(*lst):
return max(*lst, key=lambda v: len(v))
max
max(iterable, *[, default=obj, key=func]) -> value
max(arg1, arg2, *args, *[, key=func]) -> value
>>> r = max_length([1, 2, 3], [4, 5, 6, 7], [8])
>>> print(f'最长的列表是{r}')
最长的列表是[4, 5, 6, 7]
>>> def max_lists(*lst):
... return max(max(*lst, key=lambda v: max(v)))
# 例
>>> r = max_lists([1, 2, 3], [6, 7, 8], [4, 5])
>>> print(r)
8
>>> def top1(lst):
... return max(lst, default='列表为空', key=lambda v: lst.count(v))
# 例
>>> lst = [1, 3, 3, 2, 1, 1, 2]
>>> r = top1(lst)
>>> print(f'{lst}中出现次数最多的元素为:{r}')
[1, 3, 3, 2, 1, 1, 2]中出现次数最多的元素 为:1
>>> def div_by(lst, f):
... return [ [x for x in lst if f(x)], [x for x in lst if not f(x)]]
# 例
>>> records = [11,111,22,33]
>>> div_by(records, lambda x: x<100)
[[11, 22, 33], [111]]
此处注意
f
函数的使用