鱼C论坛

 找回密码
 立即注册
12
返回列表 发新帖
楼主: zltzlt

[已解决]Python:每日一题 272

[复制链接]
发表于 2019-11-12 17:36:33 | 显示全部楼层
  1. def f272(nums):
  2.     tmp = -1
  3.     while True:
  4.         try:
  5.             tmp = nums.index(2, tmp+1)
  6.             if nums[tmp+1] == 2:
  7.                 return True
  8.         except (IndexError, ValueError):
  9.             return False
复制代码

评分

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

查看全部评分

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

使用道具 举报

发表于 2019-11-12 18:13:50 | 显示全部楼层
bozhen 发表于 2019-11-11 22:22
请问put.pop(i)在这里有什么用

把下标为 i 的那个元素从列表中删除,并且把后边的元素下标通通减 1。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-11-12 19:10:56 | 显示全部楼层
  1. import sys
  2. before = sys.getrefcount(2)
  3. print(before)
  4. nums = [1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]


  5. def f272(nums):
  6.     after = sys.getrefcount(2)
  7.     print(after)
  8.     flag = 0
  9.     if after - before <= 1:
  10.         return False
  11.     else:
  12.         for i in nums:
  13.             if i == 2:
  14.                 flag += 1
  15.             else:
  16.                 flag = 0
  17.             if flag == 2:
  18.                 return True
  19.         return False
  20. print(f272(nums))
复制代码


想到了一种用系统查看某个值的引用次数来判断一个数组只有1个2或者没有2的情况
因为2这种小的整形变量id不会变
如果是这种情况,那么可以用时间复杂度O(1)返回结果
但不知道写到函数内部应该怎么写

另外list.copy()这个方法的时间复杂度是O(N)吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-11-12 19:36:57 | 显示全部楼层



def solve(ls):
    return '2, 2' in str(ls)


真是出神入化,深入简出,太牛了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-11-12 20:15:41 | 显示全部楼层
  1. def check(lst):
  2.         if lst.count(2) < 2:
  3.                 return False
  4.         num = lst.index(2)
  5.         lst.remove(2)
  6.         return num == lst.index(2)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-11-12 23:33:31 | 显示全部楼层

答案错的,不能排除如[32,233]这种列表
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-11-12 23:35:32 | 显示全部楼层
本帖最后由 peicd 于 2019-11-13 00:04 编辑

def solve(l):
    return ', 2, 2,' in ','+str(l)[1:-1]+','
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-11-13 00:17:22 | 显示全部楼层
peicd 发表于 2019-11-12 23:33
答案错的,不能排除如[32,233]这种列表

嗯,没有考虑周全。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-11-13 09:07:39 | 显示全部楼层
  1. def  lists(nums) :
  2.         for i in range(len(nums)-1):
  3.                 if nums[i] ==nums[i+1]==2:
  4.                         return True
  5.         return False
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-11-13 11:07:06 | 显示全部楼层
本帖最后由 fish_b 于 2019-11-13 11:19 编辑

发现和楼上上的想法一致。。。


  1. def f272(a):
  2.     b=str([1]+a+[1])
  3.     return ', 2, 2,' in b
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-11-13 20:39:26 | 显示全部楼层

恭喜通过!

执行用时:116 ms
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-11-13 20:41:07 | 显示全部楼层

恭喜通过!

执行用时:34 ms

效率高,给多点积分
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-11-13 20:42:19 | 显示全部楼层
eachill 发表于 2019-11-12 09:32
def double_2(a :list) -> bool:
    first = 0
    for each in a:

恭喜通过!

执行用时:46 ms
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-11-13 20:43:04 | 显示全部楼层

恭喜通过!

执行用时:14 ms
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-11-13 20:43:33 | 显示全部楼层

恭喜通过!

执行用时:24 ms
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-11-13 20:51:48 | 显示全部楼层

恭喜通过!

执行用时:21 ms
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-11-14 09:23:09 | 显示全部楼层
  1. def fun272(x):
  2.     x = ''.join([str(i) for i in x])
  3.     if len(x.split('22')) > 1:
  4.         return True
  5.     return False
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-11-14 11:26:11 | 显示全部楼层
本帖最后由 cdblsc 于 2019-11-14 11:40 编辑

def have22(ii):
    ls=map(str,ii)
    ss="".join(ls)
    if ss.find('22')>=0:
            return True
    else:
        return False

print(have22([1,2,3,4,222,5]))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-11-20 09:30:29 | 显示全部楼层
  1. def fun(s):
  2.     s1 = [str(i)for i in s]
  3.     s2 = ',' + ','.join(s1) + ','
  4.     return True if ',2,2,' in s2 else False


  5. print(fun([1, 2, 2]))
  6. print(fun([2, 2, 1, 2]))
  7. print(fun([32, 232, 2]))
  8. print(fun([32, 2, 2, 232]))
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-11-21 18:58:13 | 显示全部楼层
本帖最后由 都淡忘 于 2019-11-21 19:07 编辑
  1. print(True if __import__("re").search(r"22", "".join([str(i) for i in [2, 3, 4, 2, 3, 2, 2, 4324, 3]])) != None else False)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-19 21:50

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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