生成包含字符串和数字的列表

时间:2017-07-12 21:31:55

标签: python python-3.6

我正在尝试生成一个如下所示的列表:

list = [' a1',' a2',' a3',' a4',' a5' ,' a6',' a7',' a8',' a9'],[' b1',&# 39; b2',' b3',' b4',' b5',' b6',' b7&#39 ;,' b8',' b9'],[' c1',' c2',.........] ,...... [' f1',' f2',' f3',' f4',' f5',' f6',' f7',' f8',' f9']

我输入的代码如下:

rows = ['a','b','c','d','e','f']
newrow=[]
for i in rows:
    print('')
    for j in range(9):
    newrow.append(i + str(j+1))

print(list(newrow))

显然我在这里遗漏了一些东西。

3 个答案:

答案 0 :(得分:0)

你的语法错了。

您需要缩进for循环下面的内容。否则,它会完全跳过它,因为它不认为循环有任何体。

for i in range(1,10):
    print("Do something");

不是

for i in range(1,10):
print("Do something");

上面的代码会打印一次。第一个例子将打印10次。

答案 1 :(得分:0)

只需将其作为列表理解

rows = ['a','b','c']
newrow = [[i+str(j) for j in range(1,10)] for i in rows]

列表推导通常比for循环更快,因为每次想要追加值时都不必查找列表。

答案 2 :(得分:0)

如果您想将每个字母维护为单独的列表(在第一个示例中保留括号),则需要为每个字母附加,然后为内部循环中的每个数字附加:

rows = ['a','b','c','d','e','f']
newrow = []
for i in range(len(rows)):
    newrow.append([])
    for j in range(9):
        newrow[i-1].append(rows[i] + str(j+1))

print(list(newrow))

但我确实建议你查看列表理解,@ lordingtar的答案是嵌套列表理解,起初它们可能看起来很难,但是一旦你习惯了它们,它们真的很容易