我试图用字符串分隔集合中的值

时间:2016-04-02 04:48:47

标签: python set

我试图在一组中的值之间插入字符串'**'。除了消除我的集合中的{}。

提前感谢您提供所有帮助/建议。

我的输出应该是这样的:

    SAMPLE OUTPUT
12**16**17**18**20**21**22**23**24**28**
Set has 7 even numbers and 3 odd numbers

我目前的代码是:

import random
def main():
random_set = set([])
while len(random_set) < 10:
    random_set.add(random.randrange(10, 31))
print(random_set)
oddcount = 0
for x in random_set:
    if x%2 ==1:
        oddcount += 1
evencount = len(random_set) - oddcount
print('Set has', evencount, 'even numbers and', oddcount,'odd numbers'),
main()

我目前的输出是:

{10, 12, 14, 15, 18, 20, 25, 28, 29, 30}
Set has 7 even numbers and 3 odd numbers

3 个答案:

答案 0 :(得分:2)

您可以使用str.join方法创建一个字符串的字符串,其中包含项之间的指定分隔符:

In [58]: s = {10, 12, 14, 15, 18, 20, 25, 28, 29, 30}

In [59]: '**'.join(map(str, s))
Out[59]: '10**12**14**15**18**20**25**28**29**30'

注意,str.join接受一个可迭代的字符串,因此您必须使用map(str, s)将每个数字转换为字符串。

为了在字符串的末尾添加**,您可以使用+作为字符串连接运算符:

In [60]: '**'.join(map(str, s)) + '**'
Out[60]: '10**12**14**15**18**20**25**28**29**30**'

您还应注意,set元素的顺序未指定。要按升序打印元素,您应手动对它们进行排序:

In [61]: '**'.join(map(str, sorted(s))) + '**'
Out[61]: '10**12**14**15**18**20**25**28**29**30**'

答案 1 :(得分:1)

我得到的是您尝试打印分隔序列。您可以使用str join方法和map函数来解决此问题。

>>> print("**".join(map(str, random_set)) + "**")
12**16**17**18**20**21**22**23**24**28**

Map将您集合中的每个元素转换为字符串等效值。 join方法返回一个字符串,其中序列的元素已与一些str分隔符连接在一起。

您可以使用+将最终**添加到字符串的末尾。

答案 2 :(得分:0)

您可以使用遍历random_set的for循环,然后将所有项目附加到列表中,然后打印与'**'连接的列表:

list = []
for i in random_set:
    list.append(str(i))
print('**'.join(list)

这将以您想要的格式打印它。