如何在'n'个逗号之后加入python中的列表?

时间:2017-03-09 18:34:36

标签: python python-3.x

如何选择这样的大型列表:

line = ['8', '2', '22', '97', '38', '15', '0', '40', '0', '75', '4', '5', '7', '78', '52', '12', '50', '77', '91', '8', '49', '49', '99', '40', '17', '81', '18', '57', '60', '87', '17', '40', '98', '43', '69', '48', '4', '56', '62', '0', '81', '49', '31', '73', '55', '79', '14', '29', '93', '71', '40', '67', '53', '88', '30', '3', '49', '13', '36', '65', '52', '70', '95', '23', '4', '60', '11', '42', '69', '24', '68', '56', '1', '32', '56', '71', '37', '2', '36', '91', '22', '31', '16', '71', '51', '67', '63', '89', '41', '92', '36', '54', '22', '40', '40', '28', '66', '33', '13', '80', '24', '47', '32', '60', '99', '3', '45', '2', '44', '75', '33', '53', '78', '36', '84', '20', '35', '17', '12', '50', '32', '98', '81', '28', '64', '23', '67', '10', '26', '38', '40', '67', '59', '54', '70', '66', '18', '38', '64', '70', '67', '26', '20', '68', '2', '62', '12', '20', '95', '63', '94', '39', '63', '8', '40', '91', '66', '49', '94', '21', '24', '55', '58', '5', '66', '73', '99', '26', '97', '17', '78', '78', '96', '83', '14', '88', '34', '89', '63', '72', '21', '36', '23', '9', '75', '0', '76', '44', '20', '45', '35', '14', '0', '61', '33', '97', '34', '31', '33', '95', '78', '17', '53', '28', '22', '75', '31', '67', '15', '94', '3', '80', '4', '62', '16', '14', '9', '53', '56', '92', '16', '39', '5', '42', '96', '35', '31', '47', '55', '58', '88', '24', '0', '17', '54', '24', '36', '29', '85', '57', '86', '56', '0', '48', '35', '71', '89', '7', '5', '44', '44', '37', '44', '60', '21', '58', '51', '54', '17', '58', '19', '80', '81', '68', '5', '94', '47', '69', '28', '73', '92', '13', '86', '52', '17', '77', '4', '89', '55', '40', '4', '52', '8', '83', '97', '35', '99', '16', '7', '97', '57', '32', '16', '26', '26', '79', '33', '27', '98', '66', '88', '36', '68', '87', '57', '62', '20', '72', '3', '46', '33', '67', '46', '55', '12', '32', '63', '93', '53', '69', '4', '42', '16', '73', '38', '25', '39', '11', '24', '94', '72', '18', '8', '46', '29', '32', '40', '62', '76', '36', '20', '69', '36', '41', '72', '30', '23', '88', '34', '62', '99', '69', '82', '67', '59', '85', '74', '4', '36', '16', '20', '73', '35', '29', '78', '31', '90', '1', '74', '31', '49', '71', '48', '86', '81', '16', '23', '57', '5', '54', '1', '70', '54', '71', '83', '51', '54', '69', '16', '92', '33', '48', '61', '43', '52', '1', '89', '19', '67', '48']

并将它连接到每个第二十个数字之后的位置,它用半冒号和空格,(';')连接它,并且每隔一次它只是用空格连接它?

除了更大的外,它看起来像这样:

“8 22 2 97; 58 33 44 82; 86 ......”等等。

7 个答案:

答案 0 :(得分:4)

使用列表理解和2个嵌套str.join

很容易
"; ".join([" ".join(line[i:i+20]) for i in range(0,len(line),20)])

您将列表切片为内部部分每20个元素,创建空格分隔字符串列表,并将结果列表与"外部"分离器。

即使列表大小不能被20分割也很有效

(请注意,我强迫外部join创建列表,因为join无论如何都需要创建一个列表。在这种情况下,它比传递生成器理解更快)

答案 1 :(得分:1)

这样的事,也许?

def joinit(line, n): 
    return ': '.join(' '.join(line[i:i+n]) for i in range(0, len(line), n))

加入一段长n' '.join(line[i:i+n]), 对所有部分执行此操作,并使用第二个分隔符': '连接结果列表。

答案 2 :(得分:0)

简单的迭代方法:

counter = 0
result = ""
for num in line:
   counter += 1
   result += str(num)
   if counter == 20:
       result += ";"
       counter = 0
   result += " "

基本上,我们遍历列表的每个元素,将其加入result字符串。使用counter var,我们可以每20次迭代添加一个分号,每次检查它的值是否为20。一旦达到20,我们添加分号并将其值重置为0.

答案 3 :(得分:0)

使用行list的枚举,您可以使用索引指定在20的倍数上应该是;的时间...

joined = ''
for i, num in enumerate(line):
    joined += str(num)
    joined += ' ' if (i + 1) % 20 != 0 else '; '

答案 4 :(得分:0)

方法1

模数给出除法余数;所以创建一个空白字符串,添加列表中的每个项目,并按空格或分号分隔,具体取决于项目编号:

new_string = ''
z= len(line)
for i in range(z):
    new_string += (line[i])
    if (i%20==0) and (z>i>0):
        new_string += '; '
    else:
        new_string += ' '
print new_string

方法2

首先在列表中的每20个项目中添加分号;然后转换为字符串并删除逗号和引号:

for i in range(1,(len(line)-1)):
    if i%20==0: line[i]+=';'
line  = (((str(line)[:-1:])[1:]).replace("'",'')).replace(",",'')

答案 5 :(得分:0)

string = ''

for a in line: string+= a+'?' if (line.index(a)+1) % 20 else a+'!'

print(string)
这很简单!

答案 6 :(得分:-1)

您可以执行以下操作:

length = 20
result = '; '.join((' '.join(line[idx: idx + length]) for idx in range(len(line) - n)))