【问题标题】:Generating a list with string and number使用字符串和数字生成列表
【发布时间】:2017-07-12 21:31:54
【问题描述】:

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

列表 = ['a1', 'a2', 'a3', 'a4', 'a5', 'a6', 'a7', 'a8', 'a9'],['b1', 'b2 ', 'b3', 'b4', 'b5', 'b6', 'b7', '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))

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

【问题讨论】:

  • 您只是缺少newrow.append(i + str(j+1)) 行的缩进。
  • 对不起,缩进是我在这里输入的代码中的错误。我其实有。我需要的是一个列表列表。请注意 a9 和 b1 列表之间的方括号 = ['a1', 'a2', 'a3', 'a4', 'a5', 'a6', 'a7', 'a8', 'a9'],[ 'b1', 'b2', 'b3', 'b4', 'b5', 'b6', 'b7', 'b8', 'b9'], ['c1', 'c2', .... .....],...... ['f1', 'f2', 'f3', 'f4', 'f5', 'f6', 'f7', 'f8', 'f9']
  • 您的代码与我电脑上的缩进效果很好。

标签: python python-3.6


【解决方案1】:

你的语法错误。

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

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

不是

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

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

【讨论】:

  • 对不起,缩进是我在这里输入的代码中的一个错误。我其实有。我正在寻找的是列表列表。请注意 a9 和 b1 之间的方括号。谢谢你。列表= ['a1','a2','a3','a4','a5','a6','a7','a8','a9'],['b1','b2',' b3', 'b4', 'b5', 'b6', 'b7', 'b8', 'b9'], ['c1', 'c2', .........],.. .... ['f1', 'f2', 'f3', 'f4', 'f5', 'f6', 'f7', 'f8', 'f9']
【解决方案2】:

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

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 的答案是嵌套列表推导,一开始它们可能看起来很困难,但是一旦您习惯了它们,它们就真的很容易了。

【讨论】:

    【解决方案3】:

    只是作为一个列表理解来做

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

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

    【讨论】:

    • 感谢列表理解代码。我还没有跟上这些。但是,我正在寻找的是列表列表。请注意 a9 和 b1 之间的方括号。如果您能使用列表理解方法向我展示此代码,将不胜感激。谢谢你。列表= ['a1','a2','a3','a4','a5','a6','a7','a8','a9'],['b1','b2',' b3', 'b4', 'b5', 'b6', 'b7', 'b8', 'b9'], ['c1', 'c2', .........],.. .... ['f1', 'f2', 'f3', 'f4', 'f5', 'f6', 'f7', 'f8', 'f9']
    • 更新了我的代码。如果这正是您想要的,请接受答案
    • 谢谢。那很整洁。
    猜你喜欢
    • 2018-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多