Python 访问嵌套列表项并在不规则列表中打印某些索引
因此,当用户输入列表的数量时,问题就出现了,每个列表的元素数量是未定义的。获得输入后,打印所有列表的所需索引。问题是当某个数组或列表在索引中没有元素,但下一个列表中有元素时,要跳过。 到目前为止,我试过这样的方法 输入: 3无数组或列表 1 2 3 4 5 6 7 1 2 1234567Python 访问嵌套列表项并在不规则列表中打印某些索引,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
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]]