Python 如何根据用户输入创建列表?

Python 如何根据用户输入创建列表?,python,python-3.x,Python,Python 3.x,这就是我所做的- grid_len = input("Enter Grid Length: ") #Assuming grid_length to be 3 s = [] while True: s.append(input()) if len(s) == int(grid_len)**2: #grid_length^2 will be 9 print(s) break 例如,当输入为第一个循环中的1、第二个循环中的2、第三个

这就是我所做的-

grid_len = input("Enter Grid Length: ") #Assuming grid_length to be 3
s = []
while True:
    s.append(input())
    if len(s) == int(grid_len)**2: #grid_length^2 will be 9
        print(s)
        break
例如,当输入为第一个循环中的1、第二个循环中的2、第三个循环中的3时,依此类推至9;它会创建如下列表:

['1','2','3','4','5','6','7','8','9']
[[1,2,3],[4,5,6],[7,8,9]]
但我希望它是这样的:

['1','2','3','4','5','6','7','8','9']
[[1,2,3],[4,5,6],[7,8,9]]

您应该每隔
网格长度
元素创建一个新的子列表:

grid_len = int(input("Enter Grid Length: "))
s = []
for _ in range(grid_length):
    sub_list = []
    for _ in range(grid_length):
        sub_list.append(input())
    s.append(sub_list)
print(s)

请注意,一般情况下,每次必须在对象上顺序迭代或知道循环重复多少次时,都应使用
for
while
通常更好地处理“奇怪”条件,这些条件很难根据迭代次数或迭代一个iterable来考虑。

基于列表理解的版本

s = [[input("Enter number: ") for _ in range(grid_len)] for _ in range(grid_len)]
print s

注意:两个正斜杠“/”不是使用嵌套列表理解的有效python注释标识符:

>>> grid_len = input("Enter Grid Length: ")
Enter Grid Length: 4
>>> incrementer = iter(xrange(1, grid_len ** 2 + 1))
>>> s = [[next(incrementer) for x in xrange(grid_len)] for y in xrange(grid_len)]
>>> print s
[[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15, 16]]

我从这个问题中发现:

集成到您的代码中:

def chunks(l, n):
    return [l[i:i+n] for i in range(0, len(l), n)]
grid_len = input("Enter Grid Length: ")
s = []
while True:
    s.append(int(input())) # Notice I put int() around input()
    if len(s) == int(grid_len)**2:
        s = chunks(s,grid_len)
        print(s)
        break
编辑:更改块中的第二个参数以匹配
grid\u len
。这将不仅仅适用于3个用户。

尝试以下方法:

x = [[int(input()) for c in range(grid_len)] for r in range(grid_len)]
arr = [list(map(int, input().split())) for i in range(int(input()))]
这是我的密码:

grid_len = input("Enter Grid Length: ")
s = []
for i in range(grid_len):         #looping to append rows
    s.append([])                  #append a new row
    for j in range(grid_len):     #looping to append cells
        s[-1].append(input())     #append a new cell to the last row, or you can also append to `i`th row

我明白了你的问题,非常简单的解决办法是

grid_length = int(input())
s = []
for i in range(grid_length):
     b = list(map(int, input().split()))
     s.append(b)
print(s)
试试这个:

x = [[int(input()) for c in range(grid_len)] for r in range(grid_len)]
arr = [list(map(int, input().split())) for i in range(int(input()))]

您希望用户每3次输入创建一个列表吗?然后,对于要嵌入到另一个列表中的每个列表,顺便说一句,python中的注释以哈希符号(
#
)开头,而不是
/
:p@Haidro谢谢,但我已经知道了。@在“否”框中,我想创建一个大小网格的列表。它在这一行中给了我一个错误:范围内(网格):TypeError:“str”对象不能解释为integer@yesboy对不起,我太习惯蟒蛇了。我更新了代码以将大小转换为整数。@Bakuriu
NameError:name“grid\u length”未定义
。你必须编辑你的代码