Python 对列表中的x空格进行循环引用的代码
我有一个任务去做一个程序,在其中我得到m,n和k。我应该用Python 对列表中的x空格进行循环引用的代码,python,list,cyclic-reference,Python,List,Cyclic Reference,我有一个任务去做一个程序,在其中我得到m,n和k。我应该用n*m元素创建一个列表。 列表b应该有n*m元素。它是从列表a创建的,对于列表中的m个元素,循环向右移动k。 我知道解释得不好。例如: n=3 m=4 A=1 2 3 4 5 6 7 8 9 10 11 12 k=1 B=4 1 2 3 8 5 6 7 12 9 10 11 我目前的情况是: from random import randint n = int(input()) m=int(input()) A = [] B=[0]
n*m
元素创建一个列表。
列表b
应该有n*m
元素。它是从列表a创建的,对于列表中的m个元素,循环向右移动k。
我知道解释得不好。例如:
n=3
m=4
A=1 2 3 4 5 6 7 8 9 10 11 12
k=1
B=4 1 2 3 8 5 6 7 12 9 10 11
我目前的情况是:
from random import randint
n = int(input())
m=int(input())
A = []
B=[0]
B=B*n*m
for i in range(n*m):
A = A + [randint(1, 30)]
print('\nLista A:\n')
for i in range(n*m):
print(A[i], end = ' ')
print()
k=int(input())
for i in range(-1, m*n, m):
B[m-1-i]=A[i]
print(B[m-1-i])
print('\nLista B:\n')
for i in range(n*m):
print(B[i], end = ' ')
谢谢试试这个
# Start with an empty list
B = []
# Take A in chunks of m
for i in range( int(len(A)/m) ):
# Take an m-sized chunk of A
chunk = A[m*i:m*(i+1)]
# Shift it to the right by k (python style!)
shift = chunk[-k:] + chunk[:-k]
# Add it to B
B += shift
print (B)
备选方案:
m=4
n=3
k=1
A=list(range(1,1+m*n))
print (A)
t_1=[A[_:_+4] for _ in range(0,len(A), 4)]
print (t_1)
t_2=[]
for sublist in t_1:
t_2.append(sublist[-k:]+sublist[:-k])
print (t_2)
B=[]
for sublist in t_2:
B.extend(sublist)
print (B)
如果您想要更快的速度,那么您可以使用集合模块中的deque来构建t\u 2
这是结果
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
[[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]]
[[4, 1, 2, 3], [8, 5, 6, 7], [12, 9, 10, 11]]
[4, 1, 2, 3, 8, 5, 6, 7, 12, 9, 10, 11]
对不起,你的问题是什么?@moonigrawr OP基本上是在尝试对一维数组进行二维循环移位。@karthikr这是我假设的,但如果我能得到澄清,我不想仅仅基于假设进行工作。谢谢你的澄清。我明白了重点,但我只能用,如果,或者,因为我刚刚开始学习python。