【问题标题】:¿How to get some elements of a sublist into another sublist?¿ 如何将子列表的某些元素放入另一个子列表?
【发布时间】:2021-02-13 08:00:55
【问题描述】:

我声明letters哪个有很多子列表,我声明max

我正在尝试用letters 的子列表填充一个新列表stringWithMax,但在某种程度上,子列表只是将1 中的值获取到max 的位置i 的索引.例如,我想用letters[0] 填充stringWithMax[0],但我想取从1 到max[0] 的范围,这样当我打印stringWithMax 时它会显示在控制台[['a', 'c', 'b']] 中,然后填充stringWithMax[1] letters[1] 的值,但只是将值从 1 到 max[1],这样当我再次打印 stringWithMax 时,它会显示在控制台 [['a', 'c', 'b'], ['F', 'P', 'Z', 'W']] 中,并连续与最后一行相同。最后,当我打印stringWithMax 时,控制台中的结果显示[['a', 'c', 'b'], ['F', 'P', 'Z', 'W'], ['R', 'X', 'N']],这正是我想要的。

我已经编程了

letters = [['letters1', 'a', 'c', 'b', 'BUILD'], ['letter2','F', 'P', 'Z', 'W', 'SHOW', 'BUILD'], ['leters3','R', 'X', 'N', 'BUILD', 'SHOW']]
max = [4, 5, 4]

stringWithMax = []
def  reGet():
    for i in range(len(letters)):
        for x in range(1, max[i]): 
            stringWithMax.append(letters[i][x])
    print(stringWithMax)

reGet()

使用此代码,我只需进入控制台['a', 'c', 'b', 'F', 'P', 'Z', 'W', 'R', 'X', 'N'],这与我想要的几乎相似,但它不是我想要的带有子列表的列表。

希望有人能帮助我,谢谢!

【问题讨论】:

  • 你想要的输出是 [['a', 'c', 'b'], ['F', 'P', 'Z', 'W'], ['R', 'X','N']]?此外,不建议将列表命名为“max”,因为它也是一个内置函数名称。

标签: python python-3.x list for-loop


【解决方案1】:

您的代码最好使用list comprehension

所以你的代码是:

letters2 = [[subitem for subitem in item if len(subitem) == 1] for item in letters]

【讨论】:

    【解决方案2】:

    你可以使用切片:

    def reGet():
        for letter, upper in zip(letters, max):
            stringWithMax.append(letter[1:upper])
    

    如您所见,我还通过使用zip 而不是索引来改进您的代码。您可以通过列表理解进一步改进它:

    stringWithMax = [letter[1:upper] for letter, upper in zip(letters, max)]
    

    【讨论】:

      【解决方案3】:

      另外,列表推导的另一种情况。 项目是字母列表中的嵌套列表,子项目是项目内的每个单词/字母。它会检查长度是否 == 1,以便您知道它只是一个字母。

      letters2 = [[subitem for subitem in item if len(subitem) == 1] for item in letters]
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-02-21
        • 2014-05-08
        • 2021-08-24
        • 1970-01-01
        • 2021-02-19
        相关资源
        最近更新 更多