如何加入列表的某些部分:Python

如何加入列表的某些部分:Python,python,python-3.x,list,string-concatenation,Python,Python 3.x,List,String Concatenation,我有一个字符串的示例列表: my_list = ['hello','this','is','a','sample','list', 'thanks', 'for', 'help'] 我想把每三个元素组合在一起,比如: new_list = ['hello this is', 'a sample list', 'thanks for help'] 只需分成几块并加入: [' '.join(my_list[i:i+3]) for i in range(0, len(my_list), 3)]

我有一个字符串的示例列表:

my_list = ['hello','this','is','a','sample','list', 'thanks', 'for', 'help']
我想把每三个元素组合在一起,比如:

new_list = ['hello this is', 'a sample list', 'thanks for help']

只需分成几块并加入:

[' '.join(my_list[i:i+3]) for i in range(0, len(my_list), 3)]

只需分成几块并加入:

[' '.join(my_list[i:i+3]) for i in range(0, len(my_list), 3)]
选项1:如果
my_list
length不能被3整除,则此解决方案将删除元素 输入字符串:
['hello'、'this'、'is'、'a'、'sample'、'list'、'Thank'、'for'、'help'、'foo']

[" ".join(i) for i in zip(*[iter(my_list)]*3)]
[" ".join(i) for i in zip_longest(*[iter(my_list)]*3, fillvalue='')]
结果:
['hello this is'、'a sample list'、'谢谢帮助']

python iter技巧的工作原理:

选项2:使用
zip\u最长的方式保留额外元素
输入字符串:
['hello'、'this'、'is'、'a'、'sample'、'list'、'Thank'、'for'、'help'、'foo']

[" ".join(i) for i in zip(*[iter(my_list)]*3)]
[" ".join(i) for i in zip_longest(*[iter(my_list)]*3, fillvalue='')]
结果:
['hello this is','a sample list','Thank for help','foo']

选项1:如果
my_list
长度不能被3整除,则此解决方案将删除元素 输入字符串:
['hello'、'this'、'is'、'a'、'sample'、'list'、'Thank'、'for'、'help'、'foo']

[" ".join(i) for i in zip(*[iter(my_list)]*3)]
[" ".join(i) for i in zip_longest(*[iter(my_list)]*3, fillvalue='')]
结果:
['hello this is'、'a sample list'、'谢谢帮助']

python iter技巧的工作原理:

选项2:使用
zip\u最长的方式保留额外元素
输入字符串:
['hello'、'this'、'is'、'a'、'sample'、'list'、'Thank'、'for'、'help'、'foo']

[" ".join(i) for i in zip(*[iter(my_list)]*3)]
[" ".join(i) for i in zip_longest(*[iter(my_list)]*3, fillvalue='')]

结果:
['hello this is','a sample list','Thank for help','foo']

您可以通过使用一个步骤(在本例中为3个步骤)进行迭代,并在每个步骤下添加单个字符串来解决此问题,即,
我的列表[i]
我的列表[i+1]
<代码>我的列表[i+2]
。请注意,您需要在每个第一个和第二个字符串后面添加一个空格。这段代码的作用是:

new_list = []
for i in range(0, len(my_list), 3):
    if i + 2 < len(my_list):
        new_list.append(my_list[i] + ' ' + my_list[i+1] + ' ' + my_list[i+2])
print(new_list)

您可以通过使用一个步骤(在本例中为3个步骤)进行迭代,并在每个步骤下添加单个字符串来解决此问题,即,
my_list[i]
my_list[i+1]
<代码>我的列表[i+2]
。请注意,您需要在每个第一个和第二个字符串后面添加一个空格。这段代码的作用是:

new_list = []
for i in range(0, len(my_list), 3):
    if i + 2 < len(my_list):
        new_list.append(my_list[i] + ' ' + my_list[i+1] + ' ' + my_list[i+2])
print(new_list)

有两种解决方案可以使用

使用:

使用和:

仅使用
zip\u最长的

[' '.join(g) for g in zip_longest(*[iter(my_list)] * 3, fillvalue='')]

最后两个是根据文档中的
成对
分组
改编的。如果不是3个单词的倍数,则只有第一个选项不会在最后一组的末尾添加额外空格。

可以使用两种解决方案

使用:

使用和:

仅使用
zip\u最长的

[' '.join(g) for g in zip_longest(*[iter(my_list)] * 3, fillvalue='')]

最后两个是根据文档中的
成对
分组
改编的。如果列表不是3个单词的倍数,则只有第一个选项不会在最后一组的末尾添加额外的空格。

注意,如果列表的长度不能被3整除,则此方法将在末尾保留任何空格。这可能是个问题,也可能不是,但可能值得注意的是,如果列表的长度不能被3整除,这种方法将在最后省去任何东西。这可能是问题,也可能不是问题,但可能值得注意