如何在一行中用空格分隔输入列表中的元素?

3
我有一个列表,它接受n个元素作为输入。一切都很好,但我想在同一行上以空格分隔输入。我该如何修改下面的代码?
a = int(input("Enter size of list: "))
print("Enter elements:")
l = [int(input()) for i in range(a)]    
print(l)

我的输出:

Enter size of list: 3
Enter elements:
1
2
3
[1, 2, 3]

我希望它看起来像这样:

Enter size of list: 3
Enter elements:
1 2 3
[1, 2, 3]

我尝试过这个 (在Python中输入由空格分隔的n个元素),但它并没有满足我所需。因为它是针对动态列表的,而我需要针对静态列表根据我的代码来实现。

3个回答

4

你是不是在寻找类似这样的内容?使用enumerate()限制你的静态值。

a = int(input("Enter size of list: "))
print("Enter elements:")
l = [int(z) for y, z in enumerate(input().split()) if y < a and z.isdigit()]
print(l)

输出:

Enter size of list: 3
Enter elements:
1 2 3
[1, 2, 3]

其他输出:

Enter size of list: 3
Enter elements:
1 2 3 a b c 5
[1, 2, 3]

谢谢,伙计 :D 是的,这就是我搜索了好几个星期的东西。 - Avishek Datta Ray
你能否请解释一下逻辑? - Avishek Datta Ray
1
@AvishekDattaRay,很高兴这正是你想要的。枚举提供了一个计数器。因此,通过与您的大小限制比较计数器可以得到结果。只需添加 isdigit() 来跳过非数字即可。如果您需要任何其他内容,请告诉我。 - DaveStSomeWhere

1

但这是一个动态列表...根据我的代码,该列表在特定范围内迭代。简单来说,它的工作方式类似于静态数组。我只想在该静态列表中逐个获取元素。 - Avishek Datta Ray
我不是很理解这个问题。如果你只想要前三个元素,你可以使用 l = l[:3],或者在这种情况下使用 l = l[:a] - clubby789
不要第1至3个元素。我想要接受一个大小为n的列表,其中包含通过空格分隔的输入。根据我的代码,我必须将一个元素放在一行中。 - Avishek Datta Ray

1
您可以使用Python的map函数将给定的输入字符串映射到整数数组。
list(map(int , input().split()))

这与此链接相同 - (https://dev59.com/LIPba4cB1Zd3GeqPtII6),但我的要求不仅限于此。 - Avishek Datta Ray

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接