繁体   English   中英

¿ 如何将子列表的某些元素放入另一个子列表?

[英]¿How to get some elements of a sublist into another sublist?

我声明了哪些letters有很多子列表,并且我声明了max

我正在尝试用letters子列表填充新列表stringWithMax ,但在某种程度上,子列表只是将值从1到 de 索引, max在 position i中具有。 例如,我想用letters[0]填充stringWithMax[0] ,但我想取从 1 到 max[0] 的范围,这样当我打印stringWithMax时,它会显示在控制台[['a', 'c', 'b']] ,然后用letters[1] stringWithMax[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']与我想要的几乎相似,但它不是我想要的带有子列表的列表。

我希望有人可以帮助我,谢谢!

最好的代码是利用列表理解

所以你的代码是:

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

您可以使用切片:

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)]

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM