鱼C论坛

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

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

[复制链接]
发表于 2018-8-16 13:57:45 | 显示全部楼层
def change_199(list1):
   
    list1_x=len(list1)
    list1_y=len(list1[0])

    list2=[]
    for m in list1 :
        for n in m:
            list2.append(n)

    list2.sort()

    list3=[[0 for col in range(list1_x)] for row in range(list1_y)]

    for i in range(list1_x):
        for j in range(list1_y):
            list3[j][i]=list2[j*list1_x+i]

    for i in range(len(list3)):
        if i%2==1:
            list3[i].reverse()

    list4=[[0 for col in range(list1_x)] for row in range(list1_y)]

    for m in range(list1_x):
        for n in range(list1_y):
            list4[m][n]=list3[n][m]
            
    print(list4)  

if __name__ =='__main__':
    list1=[[-15, -82, 88, -10], [-29, -88, -43, 23], [-2, 27, 26, 8], [64, 39, 65, 93]]
    change_199(list1)

评分

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

查看全部评分

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

使用道具 举报

发表于 2018-8-16 14:11:37 | 显示全部楼层
  1. L = [[-15, -82, 88, -10], [-29, -88, -43, 23], [-2, 27, 26, 8], [64, 39, 65, 93]]
  2. raw, col = len(L), len(L[0])
  3. temp = sorted([y for x in L for y in x])
  4. new_L = [temp[i*col:i*col+col] if i % 2 == 0 else temp[i*col:i*col+col][::-1] for i in range(raw)]
  5. print([list(map(lambda item: item[i],new_L)) for i in range(col)])

  6. # result
  7. [[-88, 8, 23, 93], [-82, -2, 26, 88], [-43, -10, 27, 65], [-29, -15, 39, 64]]
复制代码

评分

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

查看全部评分

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

使用道具 举报

发表于 2018-8-16 14:34:09 | 显示全部楼层
  1. import random

  2. T,L=[],[]

  3. for i in range(4):
  4.    L.append(random.sample(range(0,99),4))

  5. for i in range(4):
  6.     print(L[i])

  7. for i in range(4):
  8.     T.extend(L[i])
  9.    
  10. T.sort()


  11. L = [[x for x in T[i:i+4]] for i in range(0,16,4)]


  12. for i in range(1,len(L),2):
  13.     L[i].reverse()

  14. L = [[row[i] for row in L] for i in range(len(L[0]))]

  15. for i in range(4):
  16.     print(L[i])
复制代码

评分

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

查看全部评分

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

使用道具 举报

发表于 2018-8-16 15:57:57 | 显示全部楼层
def test199(_list):
    temp = []
    new_list=[]
    for i in _list:
        temp.extend(i)
    temp.sort()
    length_in = len(_list[0])
    length_out = len(_list)
    for i in range(length_out):
        new_list.append([])
    for i in range(length_in):
        for j in range(length_out):
            if i%2:
                for n in range(4)[::-1]:
                    new_list[n].append(temp[0])
                    temp.pop(0)
                break
            else:
                new_list[j].append(temp[0])
                temp.pop(0)
    for i in new_list:
        print(i)
        

test199([[-88, 8, 23, 93], [-82, -2, 26, 88], [-43, -10, 27, 65], [-29, -15, 39, 64]])

评分

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

查看全部评分

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

使用道具 举报

发表于 2018-8-16 16:58:24 | 显示全部楼层
  1. def fun199(original_list):
  2.     result_list = original_list[::]
  3.     temp = []
  4.     for i in range(len(original_list)):
  5.         for j in range(len(original_list[i])):
  6.             temp.append(original_list[i][j])
  7.     temp.sort()

  8.     for i in range(len(original_list)):
  9.         for j in range(len(original_list[i])):
  10.             if i%2:
  11.                 result_list[-(j+1)][i] = temp[i*len(original_list[i])+j]
  12.             else:
  13.                 result_list[j][i] = temp[i*len(original_list[i])+j]

  14.     for i in result_list:
  15.         print(str(i).strip("[]").replace(',','\t'))

  16.         

  17. original_list = [[-15, -82, 88, -10], [-29, -88, -43, 23], [-2, 27, 26, 8], [64, 39, 65, 93]]

  18. fun199(original_list)
复制代码

评分

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

查看全部评分

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

使用道具 举报

发表于 2018-8-16 17:52:46 | 显示全部楼层
  1. def f(List):
  2.     list0, list1, result = [], [], []
  3.     length1, length2 = len(List), len(List[0])
  4.     print(List)
  5.     for i in List:
  6.         print('   '.join(map(str,i)))
  7.         for j in i:
  8.             list0.append(j)
  9.     list0.sort()
  10.     count = 1
  11.     for i in range(0,len(list0),length1):
  12.         if count % 2 == 0:
  13.             list1.append(sorted(list0[i:i+length2],reverse=True))
  14.             count += 1
  15.         else:
  16.             list1.append(list0[i:i+length2])
  17.             count += 1
  18.     for j in range(length1):
  19.         list2 = []
  20.         for each in list1:
  21.             list2.append(each[j])
  22.         result.append(list2)
  23.     print(result)
  24.     for item in result:
  25.         print('   '.join(map(str,item)))
  26. f([[-15, -82, 88, -10], [-29, -88, -43, 23], [-2, 27, 26, 8], [64, 39, 65, 93]])
复制代码
  1. [[-15, -82, 88, -10], [-29, -88, -43, 23], [-2, 27, 26, 8], [64, 39, 65, 93]]
  2. -15   -82   88   -10
  3. -29   -88   -43   23
  4. -2   27   26   8
  5. 64   39   65   93
  6. [[-88, 8, 23, 93], [-82, -2, 26, 88], [-43, -10, 27, 65], [-29, -15, 39, 64]]
  7. -88   8   23   93
  8. -82   -2   26   88
  9. -43   -10   27   65
  10. -29   -15   39   64
复制代码

评分

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

查看全部评分

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

使用道具 举报

发表于 2018-8-18 16:38:19 | 显示全部楼层
  1. def print_list(a):
  2.     for each in a:
  3.         for i in range(len(each)):
  4.             print(each[i],end ='\t')
  5.         print('\t')

  6. def resort_list(a):
  7.     translist = []
  8.     finallist = []
  9.     length = len(a)
  10.     count = 0

  11.     for i in range(length):
  12.         finallist.append([])
  13.    
  14.     for each in a:
  15.         translist.extend(each)
  16.     translist.sort()
  17.    
  18.     for j in range(len(translist)):
  19.         if (count // length) % 2 == 0:  
  20.             finallist[j%length].append( translist[j])
  21.         else:
  22.             finallist[-j%length-1].append( translist[j])
  23.         count += 1
  24.     return finallist
  25.             
  26. a = [[-15, -82, 88, -10], [-29, -88, -43, 23], [-2, 27, 26, 8], [64, 39, 65, 93]]
  27. print_list(resort_list(a))
复制代码

评分

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

查看全部评分

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

使用道具 举报

发表于 2018-8-19 09:38:56 | 显示全部楼层
python 学习中
  1. a = [[-15, -82, 88, -10], [-29, -88, -43, 23], [-2, 27, 26, 8], [64, 39, 65, 93]]

  2. def fun199(a)->list:
  3.     m, n = len(a), len(a[0])

  4.     b = []
  5.     for i in range(m):
  6.         b.extend(a[i])
  7.     b.sort()
  8.     ##print(b)
  9.     for i in range(1,m,2):
  10.         b[i*n : i*n+n] = b[i*n+n-1 : i*n-1:-1]
  11.     ##print(b)

  12.     c = []
  13.     for i in range(m):
  14.         c.append([b[i]])

  15.     for i in range(n):
  16.         for j in range(m-1):
  17.     ##        print((j+1)*(n)+i)
  18.             c[i].append(b[(j+1)*(n)+i])

  19.     for i in range(len(c)):
  20.         print(c[i])
  21. fun199(a)
复制代码
  1. [-88, 8, 23, 93]
  2. [-82, -2, 26, 88]
  3. [-43, -10, 27, 65]
  4. [-29, -15, 39, 64]
复制代码

评分

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

查看全部评分

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

使用道具 举报

发表于 2018-8-19 11:28:29 | 显示全部楼层
本帖最后由 感受蘑菇的力量 于 2018-8-19 11:32 编辑
  1. #!/usr/bin/env python3
  2. # -*- coding: utf-8 -*-

  3. list = [[-15, -82, 88, -10], [-29, -88, -43, 23], [-2, 27, 26, 8], [64, 39, 65, 93]]

  4. for a in list:
  5.     print (a)
  6. print('\n')

  7. # 降维
  8. rank = []
  9. for i in range(len(list)):
  10.     for j in range(len(list[i])):
  11.         rank.append(list[i][j])

  12. # 排序
  13. for i in range(len(rank)-1):
  14.     for j in range(len(rank)-i):
  15.         if rank[i] > rank[i+j]:
  16.             temp = rank[i]
  17.             rank[i] = rank[i+j]
  18.             rank[i+j] = temp
  19.                
  20. # 偶数行倒序
  21. for i in range(len(list)):
  22.     for j in range(len(list[i])):
  23.         list[i][j] = rank[i*len(list[i])+j]

  24. for i in range(len(list)):
  25.     if i%2 ==1:
  26.         for j in range(int(len(list[i])/2)):
  27.             temp = list[i][len(list[i])-1-j]
  28.             list[i][len(list[i])-1-j] = list[i][j]
  29.             list[i][j] = temp

  30. # 转秩
  31. for i in range(len(list)):
  32.     for j in range (i+1,len(list[i])):
  33.         temp = list[j][i]
  34.         list[j][i] = list[i][j]
  35.         list[i][j] = temp

  36. # 输出结果
  37. for i in range(len(list)):
  38.     print (list[i],end='\n')
复制代码


--------------------------------------------------------
第28个回答的,自我感觉还行 ;)
刚学,代码比较啰嗦,请多指教,谢谢!

点评

注释的很清晰,赞一个。没有功力了,最后的2分给你了  发表于 2018-8-19 19:07

评分

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

查看全部评分

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

使用道具 举报

发表于 2018-8-19 22:37:30 | 显示全部楼层
功力是啥?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-21 15:37:58 | 显示全部楼层

不好意思,评错了,想评下一个评论的,怎么改不了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-9-21 21:40:01 | 显示全部楼层
  1. def func_199(lst):
  2.         import numpy as np
  3.         ary = np.array(lst)
  4.         shape = ary.shape
  5.         row, col = shape[0], shape[1]
  6.         ary = ary.ravel()
  7.         ary = ary.sort()
  8.         ary = ary.reshape((col, row)).T
  9.         for i in range(col):
  10.                 if i % 2:
  11.                         for j in range(row//2):
  12.                                 ary[j][i], ary[row - 1 -j][i] = ary[row - 1 - j][i], ary[j][i]
  13.         print(ary)

  14. func_199([[-15, -82, 88, -10], [-29, -88, -43, 23], [-2, 27, 26, 8], [64, 39, 65, 93]])
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-8-18 22:09:04 | 显示全部楼层
qwertyuiop1822 发表于 2018-8-21 15:37
不好意思,评错了,想评下一个评论的,怎么改不了

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-19 22:26

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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