鱼C论坛

 找回密码
 立即注册
查看: 3977|回复: 29

[技术交流] Python:每日一题 131

[复制链接]
发表于 2018-1-2 10:40:04 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 jerryxjr1220 于 2018-1-3 09:38 编辑

首先祝大家2018年新年快乐!

我们的玩法做了一下改变:

1. 楼主不再提供答案。
2. 请大家先独立思考”,再参考其他鱼油的解答,这样才有助于自己编程水平的提高。
3. 鼓励大家积极答题,奖励的期限为出题后24小时内。
4. 根据答案的质量给予1~3鱼币的奖励。

题目:丢失的数字
给定一个数组包含0,1,2,3...n的数字,但是其中有可能有遗漏的数字,请找出这些遗漏的数字并输出。

例1:
Input: [3,0,1]
Output: 2

例2:
Input: [9,6,4,2,3,7,0,1]
Output: 5,8

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-1-2 11:15:18 | 显示全部楼层
  1. list1 = []
  2. get_list = input('请输入一个数组(用英文逗号隔开):')
  3. get_list = get_list.split(',')
  4. i = 0
  5. length = len(get_list)
  6. while i<length:
  7.     get_list[i] = int(get_list[i])
  8.     i+=1
  9. for i in range(max(get_list)+1):
  10.     if not(i in get_list):
  11.         list1.append(i)
  12. i2 = 0
  13. length2 = len(list1)
  14. for j in range(len(list1)):
  15.     list1[j] = str(list1[j])
  16. print(','.join(list1))
复制代码

评分

参与人数 1荣誉 +1 鱼币 +1 贡献 +1 收起 理由
jerryxjr1220 + 1 + 1 + 1

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-2 12:50:35 | 显示全部楼层
本帖最后由 yjsx86 于 2018-1-2 12:54 编辑
  1. def finddiff(l):
  2.     l = set(l)
  3.     m = max(l)
  4.     diff = {x for x in range(m+1)}
  5.     print(diff.difference(l))

  6. l = [x for x in range(10000000)]
  7. l.pop(5)
  8. l.pop(3548)
  9. l.pop(54321)
  10. finddiff(l)
复制代码

评分

参与人数 1荣誉 +1 鱼币 +1 贡献 +1 收起 理由
jerryxjr1220 + 1 + 1 + 1

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-2 13:36:19 | 显示全部楼层
本帖最后由 gunjang 于 2018-1-2 15:17 编辑

print(set(range(max(Input)+1))-set(Input))

评分

参与人数 1荣誉 +2 鱼币 +2 贡献 +2 收起 理由
jerryxjr1220 + 2 + 2 + 2

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2018-1-2 13:44:08 | 显示全部楼层
jerry新年快樂 , 最近有什麼新的ai 或 神經(深度)學習的案例可以分享嗎?XD

  1. c= eval(input("请输入列表: "))
  2. b=[i for i in range(max(c)+1)]
  3. for i in c:
  4.             b.remove(i)
  5. print(b)
复制代码

点评

我很赞同!: 5.0
可以看看这个,自己动手做做应该挺有趣 https://zhuanlan.zhihu.com/p/32526110  发表于 2018-1-2 16:02
我很赞同!: 5
我最近在学aardio,python这块碰得比较少了^_^  发表于 2018-1-2 13:57

评分

参与人数 1荣誉 +1 鱼币 +1 贡献 +1 收起 理由
jerryxjr1220 + 1 + 1 + 1

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2018-1-2 15:00:31 | 显示全部楼层
lst = [9,6,4,2,3,7,0,1]
[each for each in range(max(lst)) if each not in lst]

这样子行吗?

评分

参与人数 1荣誉 +2 鱼币 +2 贡献 +1 收起 理由
jerryxjr1220 + 2 + 2 + 1

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 2 反对 0

使用道具 举报

发表于 2018-1-2 21:04:44 | 显示全部楼层
第一想法就是既然遗漏那就说不在列表中,无脑如下:
  1. # sorted(b)[-1] 与 max(b) 互换都行
  2. for i in range(max(b)):
  3.     if i not in b:
  4.         print(i, end=',')
复制代码

方法二就是经典的顺着减差值不为1就是有断档。
  1. b.sort()
  2. for i in range(1,len(b)):
  3.     if i == 1 and b[i-1] != 0:
  4.         for j in range(b[i-1]):
  5.             print(j)
  6.     if b[i] - b[i-1] != 1:
  7.         for j in range(b[i-1]+1,b[i]):
  8.             print(j)
复制代码

评分

参与人数 1荣誉 +1 鱼币 +1 贡献 +1 收起 理由
jerryxjr1220 + 1 + 1 + 1

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2018-1-2 22:27:13 | 显示全部楼层
bb = [0,1,2,3,4,5,16]
d = max(bb)
for i in range(0,d):
        if i in bb:
                pass
        else:
                print(i)

评分

参与人数 1荣誉 +1 鱼币 +1 贡献 +1 收起 理由
jerryxjr1220 + 1 + 1 + 1

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-3 11:45:35 | 显示全部楼层
  1. def fun131(x):
  2.     y = [i for i in range(max(x)+1)]
  3.     z = [i for i in y if i not in x]
  4.     return str(z)[1:-1]

  5. if __name__ == '__main__':
  6.     print(fun131([9,6,4,2,3,7,0,1]))
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-3 17:12:56 | 显示全部楼层
  1. def f(lst):
  2.     n = max(lst)
  3.     a = set(lst)
  4.     b = set(range(n+1))
  5.     return sorted(list(b - a))

  6. input1 = [3,0,1]
  7. input2 = [9,6,4,2,3,7,0,1]

  8. print(f(input1))
  9. print(f(input2))
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-3 23:06:42 | 显示全部楼层
lst = input('请输入列表:')
b = []
for i in range(max(lst)):
        if i not in lst:
                c.append(i)
                print(c)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-4 00:14:20 | 显示全部楼层
我试试
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-4 08:55:52 | 显示全部楼层
  1. m = [int(i) for i in input().split(',')]
  2. c = []
  3. for i in range(len(m)+1):
  4.     if i not in m:
  5.         print(i)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-5 20:03:33 | 显示全部楼层
#coding:utf-8

def is_In(all_List,list1):
    all_Set = set(all_List)
    set1 = set(list1)
    result = list(all_Set - set1)
    return result

if __name__ == '__main__':
    all_List = list(range(10))
    list1 = list(input("请输入0~9的数字,逗号分开:"))
    print is_In(all_List,list1)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-5 20:08:18 | 显示全部楼层
  1. def fun(lst):
  2.     return [i for i in range(max(lst)) if i not in lst]
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-5 21:35:17 | 显示全部楼层
tuple=(0,2,3,5,7,9,)
max1=max(tuple)
for x in range(0,max1):
    if x not in tuple:
        print(x)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-5 21:49:26 | 显示全部楼层
  1. def find_lost_numbers(ls):
  2.     lost_num = []
  3.     ls.sort()
  4.     if ls[0] > 0:
  5.         lost_num.extend(list(range(ls[0])))
  6.     for i in range(1, len(ls)):
  7.         if ls[i] - ls[i-1] > 1:
  8.             lost_num.extend(list(range(ls[i-1]+1, ls[i])))
  9.     return lost_num

  10. if __name__ == '__main__':
  11.     ls1 = [2, 3, 6, 4, 8]
  12.     ls2 = [9, 6, 4, 2, 3, 7, 0, 1]
  13.     print(find_lost_numbers(ls1))
  14.     print(find_lost_numbers(ls2))
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-10 22:43:11 | 显示全部楼层
本帖最后由 chenjianvip 于 2018-1-10 22:45 编辑
  1. def get_lost_number(alist):
  2.     for i in range(alist[0], alist[-1]):
  3.         if not i in alist:
  4.             print(i)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-11 10:47:16 | 显示全部楼层
num_input=input('input some number(such as 0,1,3,...,n):')
list1=num_input.split(',')
a=len(list1)
list2=[]
for b in range(0,a):
        c=int(list1[b])
        list2.append(c)
#input a list transform str to int.
list2.sort()
#print(list2)



check_max_number=int(list2[-1])+1
#print(check_max_number)

checklist=[]
for i in range(0,check_max_number):
        checklist.append(i)

#print(checklist)

for x in checklist:
        if x not in list2:
                print(x,end=';')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-14 22:20:01 | 显示全部楼层
本帖最后由 8306最硬 于 2018-1-14 22:28 编辑
  1. def fun(lst):
  2.     return [x for x in range(max(lst)) if x not in lst]
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-3-29 07:44

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表