from random import randint
defroll_dice(n=2):
total = 0for _ in range(n):
total += randint(1,6)
return total
defmain():
f = [0] * 11for _ in range(60000):
face = roll_dice()
f[face - 2] += 1for index, val in enumerate(f):
print('%d点摇出的概率为%.2f%%.'%(index + 2,val / 600))
point = 2# 直接通过for - in 循环对列表(容器)进行遍历for counter in f:
point += 1
print('%d点摇出了%d次.'%(point - 1,counter))
if __name__ == '__main__':
main()
列表的各项应用
defmain():
g = [100,200,300]
for index, val in enumerate(g): #enumerate 既有下标也有值
print(index, ':', val)
# CRUD操作:Create Read Update Delete
g.append(123) #追加,加到最后
g.insert(1,400) #插入,可以指定插入位置,在指定下标的前一位置插入
g.insert(-1,500)
g.remove(200) #如果不知道位置,只知道元素,就用remove删除if600in g:
g.remove(600)
del g[3] #如果知道位置,就用del删除
print(g.index(300)) #查找元素index
print(g)
print(g.pop()) #默认删除最后一个参数(可删除指定下标的元素)
print(g)
g.clear() #清空
print(g)
if __name__ == '__main__':
main()
例2:“黄金比例”
defmain():
list = [1, 1]
for index in range(2,20):
val = list[index - 1] + list[index - 2]
list.append(val)
print(list)
print(list[18]/list[19])
list1 = list[18:]
list2 = list[::-1]
print(list2)
list.reverse()
print(list)
if __name__ == '__main__':
main()
defmain():
f = [x + y for x in'ABCDE'for y in'1234567']
print(f)
f = list(range(1,10))
print(f)
f = [x for x in range(1,10)]
print(f)
f = [x ** 2for x in range(1,10)]
print(f)
f = [x ** x for x in range(1,100)]
# 用列表的生成表达式语法创建列表容器# 用这种语法创建列表之后元素已经准备就绪所以需要耗费较多的内存空间
print(sys.getsizeof(f)) # 占用多少内存空间
print(f)
f = (x ** x for x in range(1, 100))# 生成器# 列表生成器 这里得到的不是一个列表 而是一个生成器对象# 通过生成器可以获得数据 它不占用额外的 空间存储数据# 每次需要数据的时候就通过生成器取数据 当然这需要花时间
print(sys.getsizeof(f))
print(f)
for val in f:
print(val)
if __name__ == '__main__':
main()
例4:著名双色球~随机生成~
defdisplay(balls):for index,ball in enumerate(balls):
if index == len(balls) - 1:
print('|',end=' ')
print('%02d'%ball,end = ' ')
print()
defrandom_select():
red_balls = list(range(1,34))
selected_balls = []
for _ in range(6):
index = randrange(len(red_balls))
selected_balls.append((red_balls[index]))
del red_balls[index]
selected_balls.sort()
selected_balls.append(randint(1,16))
return selected_balls
defmain():
n = int(input('机选几注:'))
for _ in range(n):
display(random_select())
if __name__ == '__main__':
main()
栈(stack) 堆(heop) 静态区
变量 - 是对对象的引用 -其实变量里面放的是对象的地址- 在栈上
对象 - 在堆上- 为了获取更大的存储空间
id()函数和is运算符 - 验证身份
defmain():
a = 1
b = 1
print(id(a)) # 验地址
print(id(b))
c = -1
d = -1
print(a is b) # 身份运算符 is
print(c is d)
list = [x for x in range(1,10)]
list2 = list
print(id(list))
print(id(list2))
print(list is list2)
list2 = list[:] # 此时切片 - 产生一个新的列表
print(id(list))
print(id(list2))
print(list is list2)
list[1] = 2000
list2[0] =1000
print(list)
print(list2)
if __name__ == '__main__':
main()