您的位置:首页 > 编程语言 > Python开发

python学习习题总结(5)——列表,去重,冒泡法

2018-03-31 21:24 477 查看
#输入一个数字,输出每一位数字重复几次 ##数字的给数很有限/10个/
#列表也可以看作是一种字典,索引也可以记录信息,
#通过索引遍历数组中的元素,需要赋值才能被使用 x = int(i)
import random
n = random.randint(1,100000)
print(n)
counter = [0]*10
for i in str(n):
x = int(i)
counter[x] += 1
for i in range(10):
if counter[i]:
print('The count of {} is {}'.format(i,counter[i]))
#第二种实现,遍历每一位数放入不同的数组,麻烦但适用于字符串
num = random.randint(1,100000)
print(num)
onum = str(num)
nums = [[onum[0]]]
for i in range(len(onum)):
flag = True
for j in range(len(nums)):
if onum[i] == nums[j][0]:
nums[j].append(onum[i])
flag = False
break
if flag:
nums.append([onum[i]])
for i in range(len(nums)):

print('The count of {} is {}'.format(nums[i][0],len(nums[i])))
#题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到
#3的人退出圈子,问最后留下的是原来第几号的那位。
#固定长度,改变如果淘汰,改变状态
for n in range(3,10):
lst = [0]*n
count = 0
while lst.count(0) > 1:
for i in range(n):
if not lst[i]:
count += 1
if count % 3 == 0:
lst[i] = 1
#            print(lst)
print(n,lst.index(0)+1)

#淘汰直接pop,索引有偏移
for n in range(3,10):
lst = [i for i in range(1,n+1)]
#    print(lst)
count = 0
while len(lst) > 1:
offset = 0                  #当前次有多少个被pop,索引有偏移offset
for i in range(len(lst)):
count += 1
if count % 3 == 0:
lst.pop(i-offset)
offset += 1

print(n,lst)
#去重
s = 'aaddizzxxx888'
set1 = set(s)
print(''.join(set1))
s1 = ''
for i in range(len(s)):
if s1.find(s[i]) == -1:
s1 += s[i]

print(s1)
#冒泡法排序,len()-1,len()-1-i
import random
lst = [random.randint(1,100) for i in range(10) ]
print(lst)
for i in range(len(lst)-1):
flag = True
for j in range(len(lst)-1-i):
if lst[j] > lst[j+1]:
lst[j],lst[j+1] = lst[j+1],lst[j]
flag = False
if flag:
break
print(lst)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: