访问嵌套列表项并在不规则列表中打印某些索引

时间:2019-01-14 11:25:33

标签: python list

所以问题就出在用户输入列表的数量,每个列表的元素数量是不确定的。获取输入后,打印所有列表的所需索引。问题是当某个数组或列表中的索引中没有元素,而下一个列表中有元素时,将跳过该问题。 到目前为止,我尝试过这样的事情

输入: 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] ....

2 个答案:

答案 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]]

要忽略该索引的缺失,我只能尝试一下,除了该编现在可以工作。会希望有人提供一种简单的方法,谢谢