创建一个字典
import random
d1 = {}
for k in ‘abcdef’:
for v in range(random.randint(1,5)):
if k not in d1.keys():
d1[k] = [] #赋k值,赋v空
d1[k].append(v)
print(d1)
字典元素的访问
d = dict()
d[key]
返回key对应的值value
key不存在抛出KeyError异常
get(key,[,default]) d.get[a]
返回key对应的值value
key不存在返回缺省值,如果没有设置缺省值就返回None
setdefault(key[,default]) d.setdefault(a,0)
返回key对应的值value
key不存在,添加kv对,value设置为的default,并返回default,如果default没有设置,缺省为None
import random
nums = [random.randint(-1000,1000) for i in range(10)]
d = {}
nums.sort 语法一如下:
for x in nums:
if x not in d:
d[x] = 0
d[x] += 1
print(d)
语法二如下:
for x in nums:
if x not in d:
d[x] = 1
else:
d[x] += 1
语法三如下:
for x in nums:
d[x] = d.setdefault(x,0)+1
语法四如下:
for x in nums:
d[x] = d.get(x,0)+1
语法五如下:
from collections import defaultdict #缺省字典
d = defaultdict(lambda:0)
for x in nums:
d[x] += 1
nums = [2,4,1,3]
nums.sort() #排序列表
new = sorted(nums) #排序新列表
#sorted的输出结果必为列表
nums = {2:3,1:5}
new = sorted(nums) #输出结果为key值的排序 [1,2]
new = sorted(nums.items())
#输出结果为 [(1, 5), (2, 3)]
取26个英文字母
先定义 alphabet =‘abcde……z’
- alphabet =bytes(range(97,123)).decode()
- import string
- alphabet = string.ascii_lowercase
- import random
random.choice(alphabet)
#每次从原集合中抽取一个,可重复,抽出元素为字符串
⑤ import random
print(random.sample(alphabet,2))
#元素唯一,拿出来的2个元素不重复,抽出元素为列表,若想重复抽,则
for i in range(5):
random.sample(alphabet,1)
#这样抽5次,可以出现重复
杨辉三角:输出前六航
triangle = [[1],[1,1]] #先写出前两行
for i in range(2,6): 从第三行开始循环
row = [1]
pre = triangle[i-1]
for j in range(i-1):
row.append(pre[j] +pre[j+1])
row.append(1)
triangle.append(row)
print(triangle)
从第一行开始
triangle = []
for i in range(6):
row = [1]
triangle.append(row)
if i == 0:continue
pre = triangle[i-1]
for j in range(i - 1):
row.append(pre[j] + pre[j + 1])
row.append(1)
print(triangle)
triangle = []
for i in range(6):
row = [1] * (i+1) #一次性开辟
triangle.append(row)
if i == 0:
continue
for j in range(i-1):
pre = triangle[i - 1]
row[j+1] = pre[j] +pre[j+1]
print(triangle)
##一次性开辟比一个一个append效率要高,对于一维列表,不会有地址相同的情况,可以随便更改一个元素,对于二维以及以上的列表,则会有数据更改冲突,例如:
a = [[1],[1]]*4
a[2][0]=5
print(a)
输出结果为:[[5], [1], [5], [1], [5], [1], [5], [1]]
求第m行的第k个元素
n = int(input(‘行数=’))
k = int(input(‘第k个元素=’))
triangle =[]
for i in range(n):
row = [1]
triangle.append(row)
if i == 0:
continue
pre = triangle[i-1]
for j in range(i-1):
a= pre[j] + pre[j+1]
row.append(a)
row.append(1)
print(triangle[n-1][k-1])
矩阵题:[[None] * N for row in range(N)]???
1 2 3 1 4 7
4 5 6 =====>> 2 5 8
7 8 9 3 6 9
a = [[1,2,3],[4,5,6],[7,8,9]]
b = [[],[],[]]
for i in range(3):
for j in range(3):
b[i].append(a[j][i])
print(b)
1 2 3 1 4
4 5 6 <====> 2 5
3 6
a = [[1,2,3],[4,5,6]]
b = [[],[],[]]
for i in range(3):
for j in range(2):
b[i].append(a[j][i])
print(b[i][j],end=’ ')
print()