1.螺旋矩阵
一个
n*n
的矩阵,其元素大小是从1-n*n
,矩阵右下角是1,其数字顺序呈逆时针方向。
例:1 n=3 createSpiralMatrix(n) = [[5, 4, 3], [6, 9, 2], [7, 8, 1]]
代码如下:
def createSpiralMatrix(n): dirs = [(-1, 0), (0, -1), (1, 0), (0, 1)] curDir = 0 curPos = (n - 1, n - 1) res = [[0 for x in range(n)]for y in range(n)] for i in range(1, n * n + 1): res[curPos[0]][curPos[1]] = i nextPos = curPos[0] + dirs[curDir][0], curPos[1] + dirs[curDir][1] if not (0 <= nextPos[0] < n and 0 <= nextPos[1] < n and res[nextPos[0]][nextPos[1]] == 0): curDir = (curDir + 1) % 4 nextPos = curPos[0] + dirs[curDir][0], curPos[1] + dirs[curDir][1] curPos = nextPos return res
2.生成一个凸起形的二维列表
例如:
2 n=3 constructShell(n) = [[0], [0, 0], [0, 0, 0], [0, 0], [0]]
代码示例:
def constructShell(n): return [[0]*(i+1) if i<n else [0]*(2*n-i-1) for i in range(2*n-1)]
3.字符转化成字母对应的顺序数字并求和
例如,输入
word='good'
因为
g
,o
,d
在字母数序表中的顺序分别是7
,15
,4
,则其结果就等于:7+15+15+4=41
,即,wordPower(word)=41
代码如下:
def wordPower(word): num = dict([(x,ord(x)-ord('a')+1) for x in word]) return sum([num[ch] for ch in word])
主要是用到了
dict()
和ord()
函数,ord()
函数是将字符转换成ASCII
码值,dict()
是构造dictonary对象1。4.酷数不同和的个数
给两个列表a
和b
判断其元素可以组成几组”酷数“,返回这些”酷数“不同和的个数.
”酷数“是,乘积除以和余数为零的数.即i*j%(i+j)==0
的一组数(i,j)
例如,1 a=[4,5,6,7,8] b=[8,9,10,11,12]
则
(4,12),(6,12),(8,8)
是三对“酷数”,它们的和分别是16,18,16
,所以不同和的个数就是2,即coolPairs(a,b)=2
,代码如下,def coolPairs(a, b): uniqueSums = {x+y for x in a for y in b if x*y%(x+y)==0} return len(uniqueSums)
其中,
uniqueSums
是sets
类型2,其中元素是有序唯一的。
5.乘积表
写一个函数multiplicationTable(n)
实现以下功能给定一个正整数n
,其输出为:2 multiplicationTable(n) = [[1, 2, 3, 4, 5 ], [2, 4, 6, 8, 10], [3, 6, 9, 12, 15], [4, 8, 12, 16, 20], [5, 10, 15, 20, 25]]
其代码为:
def multiplicationTable(n): return [[(x+1)*(1+y) for x in range(n)] for y in range(n) ]
主要是列表表达式的应用.
Refer
1 http://www.runoob.com/python/python-func-dict.html
2 https://docs.python.org/2/library/sets.html
3 题目来自于:https://codefights.com