2016-12-03 105 views
1

我试图例如这个名单转换整数列表转换为字符串只有一个逗号在Python

F=[6, 9, 4, 3, 6, 8] 

转换为字符串,看起来像这样:

"6 9 4, 3 6 8" 

在这种情况下,3个元素之后的逗号是来自另一个列表中元组的长度。

不知道如何做到这一点,我会很感激任何帮助!

谢谢!

编辑:好吧,我正在尝试编写一个程序,通过添加元素和查找最小值来“增加”到matrizes。 (CI,J = {分钟AI,K + BK,J})

我得到了什么至今

A="4 3 , 1 7" 
B="2 5 9, 8 6 1" 

A1 = A.split(",") 
B1 = B.split(",") 
A2 = [tuple(int(y) for y in x.split()) for x in A1] 
B2 = [tuple(int(y) for y in x.split()) for x in B1] 

D = [] 
for k in range(len(A2)): 
    for j in range(len(B2[0])): 
     C = [] 
     for i in range(len(A2[0])): 
      N = (A2[k][i] + B2[i][j]) 
      C.append(N) 
     D.append((min(C))) 

所以我写的给我正确的数字,但在列表中。我尝试了一些来自互联网的代码,但它不起作用。给定的字符串A和B可以是nxm的矩阵,这样我不能将列表剪切成两部分并将它们加在一起。

谢谢!

+0

你有尝试过什么吗?你有任何尝试的代码向我们展示? –

回答

2

您也可以使用列表理解表达式中使用zip为:

>>> my_list = [6, 9, 4, 3, 6, 8] 
>>> n = 3 
>>> ', '.join([' '.join(map(str, x)) for x in zip(*[my_list[i::n] for i in range(n)])]) 
'6 9 4, 3 6 8' 
+1

完美!适用于任何矩阵输入,无论nxn是什么!非常感谢! – Jane

+0

这实际上给了我“6 9 4,3 6 8”,我怎样才能为“6 9 4,3 6 8”添加空间? – Jane

+0

我做了一个编辑。我认为你在那之前复制了代码。重新检查它 –

2

你可以试试下面的代码:

F=[6, 9, 4, 3, 6, 8] 
len_other_list = 3 
F1 = F[:len_other_list] 
F2 = F[len_other_list:] 
reqd_string = ' '.join(map(str, F1))+', '+' '.join(map(str, F2)) 
+0

为什么你需要'str(',')'而不是','? – rassar

+0

我的不好,让我编辑 –

1

一个内胆:

' '.join([str(i) if c != 3 else str(i)+', ' for c,i in enumerate(F,start=1)]) 

这将加入由该空间中的所有元素,第三个元素之间用逗号隔开。如果要在其他元素之后添加逗号,请更改该行中的3enumerate函数计算F中元素的数量,索引从1开始。

join字符串方法将连接列表中的所有元素' '(空格)。

+0

字符串 –

+0

为真的会有尾随空格。 '''.join([str(i)if c!= 3 else str(i)+','...' – rassar

+0

Thanks - updated。 – LMc

0

好的。 1正则表达式也:)

import re 

f = [6, 9, 4, 3, 6, 8] 
a = re.sub(r"[\[\],]",r"", ''.join(str(f))) 
print "\""+a[:5]+','+a[5:]+"\"" 

输出:

"6 9 4, 3 6 8" 
0

我建议这样的:

F=[6, 9, 4, 3, 6, 8, 9, 10] 
size = 3 

s = ', '.join([' '.join(map(str, F[i:i+size])) for i in range(0, len(F), size)]) 
相关问题