使用字符串中的“+”符号连接列表项

时间:2016-07-26 16:33:51

标签: python list python-3.x

我希望我的输出为:

Enter a number : n
List from zero to your number is : [0,1,2,3, ... , n]
0 + 1 + 2 + 3 + 4 + 5 ... + n = sum(list)

然而我的实际输出是:

Enter a number : 5
List from zero to your number is :  [0, 1, 2, 3, 4, 5]
[+0+,+ +1+,+ +2+,+ +3+,+ +4+,+ +5+] =  15

我正在使用join,因为这是我所知道的唯一类型。

为什么项目周围印有加号?为什么它们围绕着空格?

如何将list的值打印到字符串中供用户阅读?

谢谢。这是我的代码:

##Begin n_nx1 application
n_put = int(input("Choose a number : "))

n_nx1lst = list()
def n_nx1fct():
    for i in range(0,n_put+1):
        n_nx1lst.append(i)
    return n_nx1lst

print ("List is : ", n_nx1fct())
print ('+'.join(str(n_nx1lst)) + " = ", sum(n_nx1lst))

4 个答案:

答案 0 :(得分:6)

int中的每个list元素更改为str来电中的.join,而不是使用generator expression

print("+".join(str(i) for i in n_nx1lst) + " = ", sum(n_nx1lst))    

在第一种情况下,您在整个str上调用list而不是list中的个别元素。因此,它连接列表的表示中的每个字符,如下所示:

'[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]'
带有+符号的

会产生您正在看到的结果。

答案 1 :(得分:4)

您无需在列表中拨打str。返回列表的str表示,其输出与'+'连接。

您可以使用map将列表中的每个项目转换为str,然后转换为join

print('+'.join(map(str, n_nx1lst)) + " = ", sum(n_nx1lst))

您还可以使用新样式格式来获得更易读的输出:

result = '+'.join(map(str, n_nx1lst))
print("{} = {}".format(result, sum(n_nx1lst)))

答案 2 :(得分:4)

您需要做的是将字符串元素连接到列表中每个元素的“+”元素。你需要的只是有一些字符串格式。

def sum_of_input():
    n = int(raw_input("Enter a number : "))  # Get our raw_input -> int
    l = range(n + 1)  # Create our list of range [ x≥0 | x≤10 ]
    print("List from zero to your number: {}".format(l))
    print(' + '.join(str(i) for i in l) + ' = {}'.format(sum(l)))

示例输出:

>>> sum_of_input()
Enter a number : 10
List from zero to your number: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 
0 + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 = 55

它是如何运作的?
我们使用所谓的list comprehension (5.1.3)(此特定用途中的生成器)迭代我们的int元素列表,创建list {{} 1}}元素。 现在我们可以使用string方法string来创建我们想要的格式。

join()

答案 3 :(得分:0)

使用f-string

n_put = range(int(input("Choose a number : ")))

res = sum(n_put)

print ("List is : ", [*n_put])

print(*n_put, sep="+", end = f" = {res}")

给予

Choose a number : 5
List is :  [0, 1, 2, 3, 4]
0+1+2+3+4 = 10