鱼C论坛

 找回密码
 立即注册
查看: 576|回复: 2

求解决问题~

[复制链接]
发表于 2018-8-26 05:04:13 | 显示全部楼层 |阅读模式

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

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

x
列表的方法:
生成以下列表:
a = [1,2,3,4,5,6]
b = [1,2,3,4,5,6]
c = [1,2,3,4,5,6]
d = [1,2,3,4,5,6]
e = [1,2,3,4,5,6]
f =  [1,2,3,4,5,6]

要生成的列表得到下面的结果:
a = [1,2,3,4,5,6]
b = [2,3,4,5,6,1]
c = [3,4,5,6,1,2]
d = [4,5,6,1,2,3]
e = [5,6,1,2,3,4]
f = [6,1,2,3,4,5]
目的:任何一个列表中的数字,横竖都不能有和它相同的数。

numpy.array的方法:
numpy.array([[1,2,3,4,5,6],[1,2,3,4,5,6],[1,2,3,4,5,6],[1,2,3,4,5,6],[1,2,3,4,5,6],[1,2,3,4,5,6]])
举例,要的结果是:
numpy.array([[1,2,3,4,5,6],[2,3,4,5,6,1],[3,4,5,6,1,2],[4,5,6,1,2,3],[5,6,1,2,3,4],[6,1,2,3,4,5]])
只要任何一个位置的数,横向和纵向都没有和它重复的就可以了。

要编程过程,重新生成结果也行,用已经生成的列表或者array排序得到也行。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2018-8-26 11:20:23 | 显示全部楼层
  1. import numpy as np

  2. a = np.array([1,2,3,4,5,6])
  3. b = a[:]
  4. c = a[:]
  5. d = a[:]
  6. e = a[:]
  7. f = a[:]
  8. g = np.array([a,b,c,d,e,f])
  9. L = len(g[0])
  10. for i in range(1,len(g)):
  11.     g[i][0:L-1] = g[i-1][1:L]
  12.     g[i][-1] = g[i-1][0]
  13. print(g)
复制代码
  1. [[1 2 3 4 5 6]
  2. [2 3 4 5 6 1]
  3. [3 4 5 6 1 2]
  4. [4 5 6 1 2 3]
  5. [5 6 1 2 3 4]
  6. [6 1 2 3 4 5]]
复制代码

  1. a = [1,2,3,4,5,6]
  2. b = a[:]
  3. c = a[:]
  4. d = a[:]
  5. e = a[:]
  6. f = a[:]
  7. g = [a,b,c,d,e,f]
  8. L = len(g[0])
  9. for i in range(1,len(g)):
  10.     g[i][0:L-1] = g[i-1][1:L]
  11.     g[i][-1] = g[i-1][0]
  12. print(g)
复制代码
  1. [[1, 2, 3, 4, 5, 6], [2, 3, 4, 5, 6, 1], [3, 4, 5, 6, 1, 2], [4, 5, 6, 1, 2, 3], [5, 6, 1, 2, 3, 4], [6, 1, 2, 3, 4, 5]]
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-26 11:21:53 | 显示全部楼层
本帖最后由 凌九霄 于 2018-8-26 12:11 编辑
  1. a = [ 1, 2, 3, 4, 5, 6 ]

  2. a.insert(0, a.pop())
  3. b = a[ : ]
  4. b.insert(0, b.pop())
  5. c = b[ : ]
  6. c.insert(0, c.pop())
  7. d = c[ : ]
  8. d.insert(0, d.pop())
  9. e = d[ : ]
  10. e.insert(0, e.pop())
  11. f = e[ : ]
  12. f.insert(0, f.pop())

  13. print(a)
  14. print(b)
  15. print(c)
  16. print(d)
  17. print(e)
  18. print(f)
复制代码


这个更灵活点,能处理任意长度的
  1. def larray(lst, result=[ ]):
  2.     i = len(result)
  3.     i += 1
  4.     if i <= len(lst):
  5.         x = lst[ : ]
  6.         x.insert(0, x.pop())
  7.         result.append(x)
  8.         larray(x)
  9.     return result
复制代码

  1. print(larray([x for x in range(1,7)]))
  2. [[6, 1, 2, 3, 4, 5], [5, 6, 1, 2, 3, 4], [4, 5, 6, 1, 2, 3], [3, 4, 5, 6, 1, 2], [2, 3, 4, 5, 6, 1], [1, 2, 3, 4, 5, 6]]

  3. print(larray([x for x in range(1,10)]))
  4. [[9, 1, 2, 3, 4, 5, 6, 7, 8], [8, 9, 1, 2, 3, 4, 5, 6, 7], [7, 8, 9, 1, 2, 3, 4, 5, 6], [6, 7, 8, 9, 1, 2, 3, 4, 5], [5, 6, 7, 8, 9, 1, 2, 3, 4], [4, 5, 6, 7, 8, 9, 1, 2, 3], [3, 4, 5, 6, 7, 8, 9, 1, 2], [2, 3, 4, 5, 6, 7, 8, 9, 1], [1, 2, 3, 4, 5, 6, 7, 8, 9]]
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-6 09:10

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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