python列表到'n'字符串数量取决于列表的长度

bab*_*doc 3 python loops list

list在Python中考虑以下内容.

c = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18]
Run Code Online (Sandbox Code Playgroud)

我想在n哪里创建字符串n = len(c)/6.因此,对于此示例,预期输出将是:

str1=1|2|3|4|5|6
str2=7|8|9|10|11|12
str3=13|14|15|16|17|18
Run Code Online (Sandbox Code Playgroud)

我如何使用循环?请注意,长度c始终是倍数6.

Joe*_*don 5

使用a comprehension生成sub-list块,然后解压缩到变量中:

c = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18]
str1, str2, str3 = (c[i:i+6] for i in range(0, len(c), 6))
Run Code Online (Sandbox Code Playgroud)

或者,如果你真的想要strings:'1|2|3|4|5|6'那么你可以使用str.join,sub-lists但这需要将所有内容转换为strings第一个:

str1, str2, str3 = ('|'.join(map(str, c[i:i+6])) for i in range(0, len(c), 6))
Run Code Online (Sandbox Code Playgroud)

这使:

>>> str1
'1|2|3|4|5|6'
>>> str2
'7|8|9|10|11|12'
>>> str3
'13|14|15|16|17|18'
Run Code Online (Sandbox Code Playgroud)

请注意,在第二个片段中,您可以使用a generator-expression而不是map()通常被认为更Pythonic,但它们会为简单的事物(如转换为strings)占用更多字符.