2017-06-02 79 views
-2

嘿,我想加入的字符串,但在奇数和偶数的情况2个不同的分隔符号:加入字符串分隔符不同

我有列表

l = [1,2,3,4,5,6,7,8,9] 

我需要加入像这样:

1 || 2 || \n 3 || 4 || \n 5 || 6 || \n 7 || 8 || \n 9 

因此,在每两个元素之后添加一个额外的换行符。

+1

请解释模式在分隔符后面,向我们展示您到目前为止所尝试的内容! –

+1

你有没有尝试过任何东西呢?你有多远? –

+3

请不要随时更换预期的输出。你能不能预先确定这一点? –

回答

3

加入每两个元素,再加入结果:

' || \n '.join([' || '.join([str(v) for v in l[i:i + 2]]) for i in range(len(l))]) 

或将其分为两个表达式:

paired = [' || '.join([str(v) for v in l[i:i + 2]]) for i in range(len(l))] 
final = ' || \n '.join(paired) 

后者能与您的预期改变输出更好。

演示:

>>> ' || \n '.join([' || '.join([str(v) for v in l[i:i + 2]]) for i in range(len(l))]) 
'1 || 2 || \n 2 || 3 || \n 3 || 4 || \n 4 || 5 || \n 5 || 6 || \n 6 || 7 || \n 7 || 8 || \n 8 || 9 || \n 9' 
+0

太好了,谢谢!这是我需要的。但我需要在发电机中练习写这个自己:) – maxou

0

类似的东西?

' || '.join(str(n) if n % 2 else '\n ' + str(n) for n in l) 
+0

如果输入不是连续的数字,这将不起作用。 –

+0

此外,预期的输出被改变了,你不得不交换你的条件或你的表达式,在这一点上,你会在开始时得到一个流浪的'\ n'。 –

0

我做了这个小脚本:

l = [1,2,3,4,5,6,7,8,9] 
ret="" 

for i in l: 
    ret=ret + str(i); 
    if i != 9: 
     ret = ret + " || "; 
    if i % 2 == 0: 
     ret = ret + "\n "; 
ret 

```

+0

这是更加动态的版本,与评论: 升= [1,2,3,4,5,6,7,8,9] RET = “” 对于i在升: RET =保留+ str(i); #如果i!= 1 [-1],则添加除最后发生的 以外的双管: ret = ret +“||”; #每2个值,如果i%2 == 0,转到换行 : ret = ret +“\ n”; ret –

0

这是一个更加动态的版本,注释:

l = [1,2,3,4,5,6,7,8,9] 
ret="" 

for i in l: 
    ret=ret + str(i); 
    # Add double pipe except for the last occurence 
    if i != l[-1]: 
     ret = ret + " || "; 
    # Every 2 values, go to newline 
    if i % 2 == 0: 
     ret = ret + "\n "; 
ret 
0
Hey guys am just a beginner in python but i tried to come up with a code for that question above i hope it is helpful somehow. 
l = [1,2,3,4,5,6,7,8,9] 
lst = [] 
lst_odd = [] 
delimeter1 = '| |' 
delimeter2 = "/n" 
count = 0 
for num in l: 
    if count == 0: 
     x = str(num) 
     lst.append(x) 
     count += 1 
    else: 
     if num % 2 == 0: 
      y = str(num) 
      lst.append(y) 
     else: 
      z = str(num) 
      lst_odd.append((delimeter2+z)) 
    if count == 2: 
      break 
main = [lst[0],lst[1],lst_odd[0],lst[2],lst_odd[1],lst[3],lst_odd[2],lst[4],lst_odd[3]] 
s = delimeter1.join(main) 
print(s)    
+0

仍然有问题,因为它是创造space.so“\ n”分隔符,所以我决定先改变它,看看代码是否会进步 – joshua