鱼C论坛

 找回密码
 立即注册
查看: 4314|回复: 27

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

[复制链接]
发表于 2017-9-16 08:38:24 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 冬雪雪冬 于 2017-9-18 11:19 编辑

首先我们的玩法做了一下改变:
1. 楼主不再提供答案。
2. 为了让大家独立思考,跟帖改为“回帖仅作者可见”。
3. 鼓励大家积极答题,奖励的期限为出题后24小时内。
4. 根据答案的质量给予1~3鱼币的奖励。

这次我们是个排序题,有一组数字,其中有正负数,有整数和浮点数,排序的要求是首先正数排在负数前,然后整数排在浮点数前,然后再按绝对值由小到大排序。例如
  1. [-13, 14, 5, 5, 18, -2, 13, 15, -3, 10, 9.43, -4.43, 4.57, 8.57, 9.57, -6.14, 2.29, 9.43, 4.14, -5.57]
复制代码

排序后是
  1. [5, 5, 10, 13, 14, 15, 18, 2.29, 4.14, 4.57, 8.57, 9.43, 9.43, 9.57, -2, -3, -13, -4.43, -5.57, -6.14]
复制代码

本帖被以下淘专辑推荐:

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

使用道具 举报

发表于 2017-9-16 09:18:52 | 显示全部楼层
a =[-13, 14, 5, 5, 18, -2, 13, 15, -3, 10, 9.43, -4.43, 4.57, 8.57, 9.57, -6.14, 2.29, 9.43, 4.14, -5.57]
b = []
c = []
d = []
e = []
for i in range(len(a)):
    if a[i] > 0 and type(a[i]) == int:
        b.append(a[i])
    elif a[i] >0 and type(a[i]) == float:
        c.append(a[i])
    elif a[i] < 0 and type(a[i]) == int:
        d.append(a[i])
    elif a[i] < 0 and type(a[i]) == float:
        e.append(a[i])
b.sort()
c.sort()
d.sort(reverse = True)
e.sort(reverse = True)
print(b + c + d + e)
楼主题目是按绝对值由小到大排序,为什么你的答案小数部分没有按绝对值由小到大排序?

点评

我很赞同!: 5.0
我很赞同!: 5
感谢指正,已修改!  发表于 2017-9-16 09:48

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

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

使用道具 举报

发表于 2017-9-16 11:48:25 | 显示全部楼层
  1. list1=[-13, 14, 5, 5, 18, -2, 13, 15, -3, 10, 9.43, -4.43, 4.57, 8.57, 9.57, -6.14, 2.29, 9.43, 4.14, -5.57]
  2. list_int=[]
  3. list_float=[]
  4. list_int_positive=[]
  5. list_float_positive=[]
  6. list_final=[]
  7. for each_str in list1:
  8.     if each_str<0:
  9.         if isinstance(each_str,int)==True:
  10.             list_int.append(each_str)
  11.         elif isinstance(each_str,float)==True:
  12.             list_float.append(each_str)
  13.     else:
  14.         if isinstance(each_str,int)==True:
  15.             list_int_positive.append(each_str)
  16.         elif isinstance(each_str,float)==True:
  17.             list_float_positive.append(each_str)

  18. list_int.sort(reverse=True)
  19. list_float.sort(reverse=True)
  20. list_int_positive.sort()
  21. list_float_positive.sort()
  22. list_final=list_int_positive+list_float_positive+list_int+list_float
  23. print(list_final)
复制代码

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

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

使用道具 举报

发表于 2017-9-16 16:17:59 | 显示全部楼层
多条件排序
  1. def fun(lst):
  2.     return sorted(lst, key = lambda x: (x<0, isinstance(x,float), abs(x)))
复制代码

点评

简介,充分体现了python的语法强大。  发表于 2017-9-16 20:03

评分

参与人数 1荣誉 +5 鱼币 +5 收起 理由
冬雪雪冬 + 5 + 5

查看全部评分

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

使用道具 举报

发表于 2017-9-16 16:39:18 | 显示全部楼层
  1. def mySort(nums):
  2.     positiveInt = []
  3.     positiveFloat = []
  4.     negativeInt = []
  5.     negativeFloat = []
  6.     for n in nums:
  7.         if not isinstance(n, (int,float)):
  8.             print('Illegal Input')
  9.             return None
  10.         if n >= 0:
  11.             if isinstance(n, int):
  12.                 positiveInt.append(n)
  13.             else:
  14.                 positiveFloat.append(n)
  15.         else:
  16.             if isinstance(n, int):
  17.                 negativeInt.append(n)
  18.             else:
  19.                 negativeFloat.append(n)
  20.     return sorted(positiveInt) + sorted(positiveFloat) + sorted(negativeInt,reverse=True) + sorted(negativeFloat,reverse=True)


  21. nums1 = [-13, 14, 5, 5, 18, -2, 13, 15, -3, 10, 9.43, -4.43, 4.57, 8.57, 9.57, -6.14, 2.29, 9.43, 4.14, -5.57]
  22. print(mySort(nums1))
复制代码

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

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

使用道具 举报

发表于 2017-9-16 19:04:22 | 显示全部楼层
  1. s = [-13, 14, 5, 5, 18, -2, 13, 15, -3, 10, 9.43, -4.43, 4.57, 8.57, 9.57,\
  2.      -6.14, 2.29, 9.43, 4.14, -5.57]
  3. newlist = []
  4. 正整数 = [i for i in s if type(i) == int and i > 0]
  5. 正浮点 = [i for i in s if type(i) == float and i >0]
  6. 负整数 = [i for i in s if type(i) == int and i < 0]
  7. 负浮点 = [i for i in s if type(i) == float and i < 0]

  8. newlist = sorted(正整数) + sorted(正浮点) + sorted(负整数, reverse=True) +\
  9. sorted(负浮点,reverse=True)
  10. print(newlist)
复制代码

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

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

使用道具 举报

发表于 2017-9-16 19:38:22 | 显示全部楼层
  1. list1 = [-13, 14, 5, 5, 18, -2, 13, 15, -3, 10, 9.43, -4.43, 4.57, 8.57, 9.57, -6.14, 2.29, 9.43, 4.14, -5.57]

  2. plus = []
  3. minus = []
  4. for each in list1:
  5.     if each > 0:
  6.         plus.append(each)
  7.     else:
  8.         minus.append(each)

  9. plus_int = []
  10. plus_float = []
  11. for each in plus:
  12.     if int(each) == each:
  13.         plus_int.append(each)
  14.     else:
  15.         plus_float.append(each)
  16. plus_int.sort()
  17. plus_float.sort()

  18. minus_int = []
  19. minus_float = []
  20. for each in minus:
  21.     if int(each) == each:
  22.         minus_int.append(each)
  23.     else:
  24.         minus_float.append(each)
  25. minus_int.sort(reverse=True)
  26. minus_float.sort(reverse=True)

  27. result = plus_int + plus_float + minus_int + minus_float
  28. print(result)
复制代码

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

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

使用道具 举报

发表于 2017-9-16 22:32:58 From FishC Mobile | 显示全部楼层
def paixu(a):
    o=[]
    p=[]
    q=[]
    r=[]
    x=[]
    for j in a:
        i=str(j)
        if "." in i and float(i) >0:
            o.append(float(i))
        elif "." in i and float(i) <0:
            p.append(float(i))
        elif int(i) >0:
            q.append(int(i))
        elif int(i) <0:
            r.append(int(i))
    q.sort()
    r.sort(reverse = True)
    o.sort()
    p.sort(reverse = True)
    x=q+r+o+p
    return(x)

a=[-13, 14, 5, 5, 18, -2, 13, 15, -3, 10, 9.43, -4.43, 4.57, 8.57, 9.57, -6.14, 2.29, 9.43, 4.14, -5.57]
print(paixu(a))


评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

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

使用道具 举报

发表于 2017-9-17 11:46:05 | 显示全部楼层
本帖最后由 wc365 于 2017-9-17 11:56 编辑
  1. def sort101(str1):
  2.     str2 = [x for x in str1 if isinstance(x,int) and x >= 0]
  3.     str3 = [x for x in str1 if isinstance(x,float) and x > 0]
  4.     str4 = [x for x in str1 if isinstance(x,int) and x < 0]
  5.     str5 = [x for x in str1 if isinstance(x,float) and x <0]
  6.     return sorted(str2) + sorted(str3) + sorted(str4,reverse = True) + sorted(str5,reverse = True)
复制代码

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

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

使用道具 举报

发表于 2017-9-17 23:09:16 | 显示全部楼层
本帖最后由 小伟孒 于 2017-9-17 23:10 编辑

s=[-13, 14, 5, 5, 18, -2, 13, 15, -3, 10, 9.43, -4.43, 4.57, 8.57, 9.57, -6.14, 2.29, 9.43, 4.14, -5.57]
z=[]
f=[]
p=[]
o=[]
for i in s:
    if i >0 :
        if type(i) == int :
            z.append(i)
        else :
            f.append(i)
    else :
        if type(i) == int :
            p.append(i)
        else:
            o.append(i)
z.sort()
f.sort()
p.sort()
p.reverse()
o.sort()
o.reverse()
print(z+f+p+o)

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

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

使用道具 举报

发表于 2017-9-18 23:18:56 | 显示全部楼层
  1. def fun(mix):
  2.         result = []
  3.        
  4.         Positive_integer = [i for i in mix if (int(i) == i and i>0)]
  5.         Negative_integer = [i for i in mix if int(i) == i and i<0]
  6.         Positive_float = [i for i in mix if int(i) != i and i>0]
  7.         Negative_float = [i for i in mix if int(i) != i and i<0]
  8.        
  9.         Positive_integer.sort()
  10.         Positive_float.sort()
  11.         Negative_float.sort()
  12.         Negative_integer.sort()
  13.        
  14.         result.extend(Positive_integer)
  15.         result.extend(Positive_float)
  16.         result.extend(Negative_integer)
  17.         result.extend(Negative_float)
  18.        
  19.         return result


  20. if __name__ == '__main__':
  21.         mix = [-13, 14, 5, 5, 18, -2, 13, 15, -3, 10, 9.43, -4.43, 4.57, 8.57, 9.57, -6.14, 2.29, 9.43, 4.14, -5.57]
  22.         print(fun(mix))
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-9-20 22:45:20 | 显示全部楼层

厉害!求解释,特别是lambda()里面的内容,啥意思啊?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-9-21 09:17:06 | 显示全部楼层
my_list =[-13, 14, 5, 5, 18, -2, 13, 15, -3, 10, 9.43, -4.43, 4.57, 8.57, 9.57, -6.14, 2.29, 9.43, 4.14, -5.57]

my_positive_int =[]
my_float =[]
negative_num=[]

for i in my_list:
    if type(i) ==  int and i >=0:
        my_positive_int.append(i)
    elif type(i) == float and i >=0:
        my_float.append(i)
    else:
        negative_num.append(i)



my_new_list = sorted(my_positive_int) + sorted(my_float) + sorted(negative_num,reverse =True)

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

使用道具 举报

发表于 2017-9-21 09:31:05 | 显示全部楼层
def lists(listes):
    n=int(len(listes))
    i=0
    a=[]
    while i<(n-1):
        if listes[i]>0:
            a.insert(0,listes[i])
            i+=1
        elif listes[i]<0:
            a.append(listes[i])
            i+=1
    print(a)

只会写正负分离,整数和浮点数不会分离
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-9-21 18:19:59 | 显示全部楼层
助人为乐的乐为 发表于 2017-9-20 22:45
厉害!求解释,特别是lambda()里面的内容,啥意思啊?

排序遵循元组顺序,也就是 key= (条件1,条件2,条件3,··· ···)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-9-21 21:38:53 | 显示全部楼层
  1. x=[-13, 14, 5, 5, 18, -2, 13, 15, -3, 10, 9.43, -4.43, 4.57, 8.57, 9.57, -6.14, 2.29, 9.43, 4.14, -5.57]
  2. def mysort(x):
  3.     x=sorted([i for i in x if i>0 and isinstance(i,type(1))])+sorted([i for i in x if i>0 and isinstance(i,type(0.1))])+sorted([i for i in x if i<0 and isinstance(i,type(1))],reverse = True)+sorted([i for i in x if i<0 and isinstance(i,type(0.1))],reverse = True)
  4.     print(x)
  5. mysort(x)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-9-22 23:45:26 | 显示全部楼层
list1=[-13, 14, 5, 5, 18, -2, 13, 15, -3, 10, 9.43, -4.43, 4.57, 8.57, 9.57, -6.14, 2.29, 9.43, 4.14, -5.57]
list_int=[]
list_float=[]
list_int_positive=[]
list_float_positive=[]
list_final=[]
for each_str in list1:
    if each_str<0:
        if isinstance(each_str,int)==True:
            list_int.append(each_str)
        elif isinstance(each_str,float)==True:
            list_float.append(each_str)
    else:
        if isinstance(each_str,int)==True:
            list_int_positive.append(each_str)
        elif isinstance(each_str,float)==True:
            list_float_positive.append(each_str)

list_int.sort(reverse=True)
list_float.sort(reverse=True)
list_int_positive.sort()
list_float_positive.sort()
list_final=list_int_positive+list_float_positive+list_int+list_float
print(list_final)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-11-7 16:17:02 | 显示全部楼层
  1. a = [-13, 14, 5, 5, 18, -2, 13, 15, -3, 10, 9.43, -4.43, 4.57, 8.57, 9.57, -6.14, 2.29, 9.43, 4.14, -5.57]

  2. b = []
  3. c = []

  4. d = []
  5. e = []

  6. f = []
  7. g = []

  8. for i in a:
  9.     if i > 0:
  10.         b.append(i)
  11.     else:
  12.         c.append(i)

  13. for i in b:
  14.     if int == type(i):
  15.         d.append(i)
  16.     elif float == type(i):
  17.         e.append(i)
  18.         
  19. for i in c:
  20.     if int == type(i):
  21.         f.append(i)
  22.     elif float == type(i):
  23.         g.append(i)

  24. d = sorted(d)
  25. e = sorted(e)
  26. f = sorted(f,reverse=True)
  27. g = sorted(g,reverse=True)

  28. print(d+e+f+g)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-12-2 02:07:57 | 显示全部楼层
  1. lst = [-13, 14, 5, 5, 18, -2, 13, 15, -3, 10, 9.43, -4.43, 4.57, 8.57, 9.57, -6.14, 2.29, 9.43, 4.14, -5.57]


  2. def ordered(lst):
  3.     allPlusInt = sorted([i for i in lst if i > 0 and isinstance(i, int)])
  4.     allPlusFloat = sorted([i for i in lst if i > 0 and isinstance(i, float)])
  5.     allMinusInt = list(reversed(sorted([i for i in lst if i < 0 and isinstance(i, int)])))
  6.     allMinusFloat = list(reversed(sorted([i for i in lst if i < 0 and isinstance(i, float)])))
  7.     return allPlusInt+allPlusFloat+allMinusInt+allMinusFloat

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

使用道具 举报

发表于 2018-2-24 15:20:13 | 显示全部楼层
data=[-13, 14, 5, 5, 18, -2, 13, 15, -3, 10, 9.43, -4.43, 4.57, 8.57, 9.57, -6.14, 2.29, 9.43, 4.14, -5.57]
new_data=[]
pos=[]
neg=[]
pos_int=[]
neg_int=[]
pos_flo=[]
neg_flo=[]
for i in data:
    if i > 0:
        pos.append(i)
    else:
        neg.append(i)
for i in pos:
    if type(i) == float:
        pos_flo.append(i)
    else:
        pos_int.append(i)
for i in neg:
    if type(i) == float:
        neg_flo.append(i)
    else:
        neg_int.append(i)
pos_int.sort()
pos_flo.sort()
neg_int.sort(reverse=True)
neg_flo.sort(reverse=True)
new_data = pos_int + pos_flo + neg_int + neg_flo
print(new_data)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-29 05:13

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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