所以问题就出在用户输入列表的数量,每个列表的元素数量是不确定的。获取输入后,打印所有列表的所需索引。问题是当某个数组或列表中的索引中没有元素,而下一个列表中有元素时,将跳过该问题。 到目前为止,我尝试过这样的事情
输入: 3(没有数组或列表) 1 2 3 4 5 6 7 1 2 1 2 3 4 5 6 7
a=[]
nars=input('enter the number of arrays')
nars=int(nars)
for i in range(0,nars):
x = [int(i) for i in input().split()]
a.append(x)
print(a)
输出: [[1、2、3、4、5、6、7],[1、2],[1、2、3、4、5、6、7]]
预期: [[1、2、3、4、5、6、7],[1、2],[1、2、3、4、5、6、7]] [[1,1,1],[2,2,2],[3,3] ....
答案 0 :(得分:0)
假设用户输入的字符串如下:
nars= "1 2 3 4 5 6 7 1 2 1 2 3 4 5 6 7"
您可以转换为整数列表:
ary = [ int(i) for i in nars.split(' ')]
然后定义一种根据条件(谓词)对列表进行切片的方法:
def slice_when(predicate, iterable):
i, x, size = 0, 0, len(iterable)
while i < size-1:
if predicate(iterable[i], iterable[i+1]):
yield iterable[x:i+1]
x = i + 1
i += 1
yield iterable[x:size]
因此,您可以致电:
print(list(slice_when(lambda x,y: x>y, ary)))
#=> [[1, 2, 3, 4, 5, 6, 7], [1, 2], [1, 2, 3, 4, 5, 6, 7]]
然后,您还可以执行以下操作:
print(list(slice_when(lambda x,y: x!=y, sorted(ary))))
#=> [[1, 1, 1], [2, 2, 2], [3, 3], [4, 4], [5, 5], [6, 6], [7, 7]]
您可以将结果合并以获得所需的输出。
答案 1 :(得分:0)
a=[]
c=[]
nars=input('enter the number of arrays')
nars=int(nars)
for i in range(0,nars):
x = [int(i) for i in input().split()]
a.append(x)
print(a)
for i in range(len(a[i])):
temp=[]
for j in range(len(max(a))):
try:
temp.append(a[j][i])
except IndexError:
continue
c.append(temp)
print(c)
output:
1 2 3 4 5
1 2
1 2 3 4 5 6
[[1, 2, 3, 4, 5], [1, 2], [1, 2, 3, 4, 5, 6]]
[[1, 1, 1], [2, 2, 2], [3, 3], [4, 4], [5, 5], [6]]
要忽略该索引的缺失,我只能尝试一下,除了该编现在可以工作。会希望有人提供一种简单的方法,谢谢