Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 访问嵌套列表项并在不规则列表中打印某些索引_Python_List - Fatal编程技术网

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

Python 访问嵌套列表项并在不规则列表中打印某些索引,python,list,Python,List,因此,当用户输入列表的数量时,问题就出现了,每个列表的元素数量是未定义的。获得输入后,打印所有列表的所需索引。问题是当某个数组或列表在索引中没有元素,但下一个列表中有元素时,要跳过。 到目前为止,我试过这样的方法 输入: 3无数组或列表 1 2 3 4 5 6 7 1 2 1234567 a=[] nars=input('enter the number of arrays') nars=int(nars) for i in range(0,nars): x = [int(i) for

因此,当用户输入列表的数量时,问题就出现了,每个列表的元素数量是未定义的。获得输入后,打印所有列表的所需索引。问题是当某个数组或列表在索引中没有元素,但下一个列表中有元素时,要跳过。 到目前为止,我试过这样的方法

输入: 3无数组或列表 1 2 3 4 5 6 7 1 2 1234567

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]…

假设用户输入为以下字符串:

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, sorted(ary))))  
#=> [[1, 1, 1], [2, 2, 2], [3, 3], [4, 4], [5, 5], [6, 6], [7, 7]]
您可以加入结果以获得所需的输出

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)

为了忽略缺少某个索引,我不得不尝试一下,但程序现在可以运行了。希望有人能给出一个简单的方法,谢谢你

完整的输出是什么?我想你是在尝试从每个列表中获取第一个元素并创建一个列表,然后从另一个列表中获取第二个元素并创建一个列表,依此类推,你可以这样做吗应该尝试使用zip,看看你能走多远。最好解释一下你想做什么。根据你的预期输出,这里不是很清楚很新,我找不到编辑问题的方法。我添加了我的预期输出和代码。请过目并提供任何简单的方法。感谢uas我是新来的,不能告诉输入错误直接地,它的下一行每一个数组或列表都是在下一行上键入的,它不一定是1到7,它只是随机数,所以不需要排序,我展示了一种方法,我认为在这种情况下是有用的,当然需要一个更好的用户输入的概念。例如,在字符串3, 4, 5、1, 8, 1、3, 5, 7、2的情况下,第二种方法可以工作。基于相等性在子列表中分组。对于基于输入顺序的分组,在随机输入的情况下,需要不同于x>y的信号,例如终止符字符。请提供用户输入的示例。
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]]