在 Python 中将具有不同类型的项目列表作为字符串加入

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/3590165/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-18 11:51:59  来源:igfitidea点击:

Join a list of items with different types as string in Python

pythonstringlist

提问by AKM

I need to join a list of items. Many of the items in the list are integer values returned from a function; i.e.,

我需要加入一个项目列表。列表中的许多项是从函数返回的整数值;IE,

myList.append(munfunc()) 

How should I convert the returned result to a string in order to join it with the list?

我应该如何将返回的结果转换为字符串以将其与列表连接?

Do I need to do the following for every integer value:

我是否需要为每个整数值执行以下操作:

myList.append(str(myfunc()))

Is there a more Pythonic way to solve casting problems?

有没有更 Pythonic 的方法来解决铸造问题?

采纳答案by Mark Byers

Calling str(...)is the Pythonic way to convert something to a string.

调用str(...)是将某些内容转换为字符串的 Pythonic 方式。

You might want to consider why you want a list of strings. You could instead keep it as a list of integers and only convert the integers to strings when you need to display them. For example, if you have a list of integers then you can do this:

您可能需要考虑为什么需要字符串列表。您可以将其保留为整数列表,并仅在需要显示时将整数转换为字符串。例如,如果您有一个整数列表,那么您可以这样做:

print ', '.join(str(x) for x in list_of_ints)

回答by allyourcode

There's nothing wrong with passing integers to str. One reason you might not do this is that myList is really supposed to be a list of integers e.g. it would be reasonable to sum the values in the list. In that case, do not pass your ints to str before appending them to myList. If you end up not converting to strings before appending, you can construct one big string by doing something like

将整数传递给 str 没有错。您可能不这样做的一个原因是 myList 实际上应该是一个整数列表,例如,对列表中的值求和是合理的。在这种情况下,在将整数附加到 myList 之前不要将它们传递给 str。如果在追加之前最终没有转换为字符串,则可以通过执行以下操作来构造一个大字符串

', '.join(map(str, myList))

回答by Ivo van der Wijk

Your problem is rather clear. Perhaps you're looking for extend, to add all elements of another list to an existing list:

你的问题比较清楚。也许您正在寻找扩展,将另一个列表的所有元素添加到现有列表中:

>>> x = [1,2]
>>> x.extend([3,4,5])
>>> x
[1, 2, 3, 4, 5]

If you want to convert integers to strings, use str() or string interpolation, possibly combined with a list comprehension, i.e.

如果要将整数转换为字符串,请使用 str() 或字符串插值,可能与列表理解结合使用,即

>>> x = ['1', '2']
>>> x.extend([str(i) for i in range(3, 6)])
>>> x
['1', '2', '3', '4', '5']

All of this is considered pythonic (ok, a generator expression is even more pythonic but let's stay simple and on topic)

所有这些都被认为是 pythonic(好吧,生成器表达式更 pythonic 但让我们保持简单和主题)

回答by Tony Veijalainen

Maybe you do not need numbers as strings, just do:

也许您不需要数字作为字符串,只需执行以下操作:

functaulu = [munfunc(arg) for arg in range(loppu)]

Later if you need it as string you can do it with string or with format string:

稍后如果您需要它作为字符串,您可以使用字符串或格式字符串来完成:

print "Vastaus5 = %s" % functaulu[5]

print "Vastaus5 = %s" % functaulu[5]

回答by Prakash N

map function in python can be used. It takes two arguments. First argument is the functionwhich has to be used for each element of the list. Second argument is the iterable.

可以使用python中的map函数。它需要两个参数。第一个参数是必须用于列表中每个元素的函数。第二个参数是iterable

a = [1, 2, 3]   
map(str, a)  
['1', '2', '3']

After converting the list into string you can use simple joinfunction to combine list into a single string

将列表转换为字符串后,您可以使用简单的连接函数将列表合并为一个字符串

a = map(str, a)    
''.join(a)      
'123'

回答by Prateek Verma

a=[1,2,3]
b=[str(x) for x in a]
print b

above method is the easiest and most general way to convert list into string. another short method is-

上述方法是将列表转换为字符串的最简单和最通用的方法。另一个简短的方法是-

a=[1,2,3]
b=map(str,a)
print b

回答by Thomas Turner

There are three ways of doing this.

有三种方法可以做到这一点。

let say you got a list of ints

假设你有一个整数列表

my_list = [100,200,300]
  1. "-".join(str(n) for n in my_list)
  2. "-".join([str(n) for n in my_list])
  3. "-".join(map(str, my_list))
  1. "-".join(str(n) for n in my_list)
  2. "-".join([str(n) for n in my_list])
  3. "-".join(map(str, my_list))

However as stated in the example of timeit on python website at https://docs.python.org/2/library/timeit.htmlusing a map is faster. So I would recommend you using "-".join(map(str, my_list))

但是,正如 Python 网站https://docs.python.org/2/library/timeit.html上的 timeit 示例中所述,使用地图更快。所以我建议你使用"-".join(map(str, my_list))

回答by Jayhello

For example:

例如:

lst_points = [[313, 262, 470, 482], [551, 254, 697, 449]]

lst_s_points = [" ".join(map(str, lst)) for lst in lst_points]
print lst_s_points
# ['313 262 470 482', '551 254 697 449']

As to me, I want to add a strbefore each str list:

至于我,我想str在每个 str 列表之前添加一个:

# here o means class, other four points means coordinate
print ['0 ' + " ".join(map(str, lst)) for lst in lst_points]
# ['0 313 262 470 482', '0 551 254 697 449']

Or single list:

或单个列表:

lst = [313, 262, 470, 482]
lst_str = [str(i) for i in lst]
print lst_str, ", ".join(lst_str)
# ['313', '262', '470', '482'], 313, 262, 470, 482

lst_str = map(str, lst)
print lst_str, ", ".join(lst_str)
# ['313', '262', '470', '482'], 313, 262, 470, 482

回答by Albin Bohlin

How come no-one seems to like repr?
python 3.7.2:

怎么好像没人喜欢repr
蟒蛇 3.7.2:

>>> int_list = [1, 2, 3, 4, 5]
>>> print(repr(int_list))
[1, 2, 3, 4, 5]
>>> 

Take care though, it's an explicit representation. An example shows:

不过要小心,这是一个明确的表示。一个例子显示:

#Print repr(object) backwards
>>> print(repr(int_list)[::-1])
]5 ,4 ,3 ,2 ,1[
>>> 

more info at pydocs-repr

更多信息在pydocs-repr