[英]¿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.