将列表中的每个元素转换为单独的字符串?

时间:2015-11-24 11:15:03

标签: python string list for-loop

我有以下列表:

mylist=[[3, 95],[8, 92],[18, 25],[75, 78],[71, 84],-9999,[96, 50],[91, 70],-9999,[19, 60]]

除此之外,每个元素都是一个列表,除了-9999int之外。

假设我想使用for循环将每个元素转换为string,以便将其写入excelcsv文件。我怎么能这样做?

这是我的尝试:

mylist=[[3, 95],[8, 92],[18, 25],[75, 78],[71, 84],-9999,[96, 50],[91, 70],-9999,[19, 60]]
for i in enumerate(mylist):
    str1 = ''.join(str(e) for e in mylist)

但我得到的是将整个列表转换为单个字符串,而不区分每个项目:

str1='[3, 95][8, 92][18, 25][75, 78][71, 84]-9999[96, 50][91, 70]-9999[19, 60]'

相反,我想这样:

str1='[3,95]' #Iter 1
str1='[8, 92]' #Iter 2
str1='[18, 25]' #Iter 3
...
#and so forth

3 个答案:

答案 0 :(得分:3)

这应该有效:

for e in map(str, myList):
    #do your stuff here, e is '[3, 95]' on the fst element and so on

map将函数应用于myList中的每个元素。使用str函数会将列表中的每个元素转换为字符串,以便您可以自由使用它。

答案 1 :(得分:1)

你在这里犯了两个不同的错误。首先,在每次迭代中,当您只想str.join str(elem)是列表中的当前项时,您使用elem从完整列表中创建一个字符串。

mylist=[[3, 95],[8, 92],[18, 25],[75, 78],[71, 84],-9999,[96, 50],[91, 70],-9999,[19, 60]]
for elem in mylist:
    str1 = str(elem)

您还未正确使用enumerateenumerate用于获取列表中每个项目的索引值。您的原始代码将索引和项目都作为i。即。 i = (0, [3, 95]),当你真正想要它们分开的时候。如果您需要这些索引,请使用:

for i, elem in enumerate(mylist):
    str1 = str(elem)

i = 0elem = [3, 95]

答案 2 :(得分:0)

mylist = [[3, 95],[8, 92],[18, 25],[75, 78],[71, 84],-9999,[96, 50],[91, 70],-9999,[19, 60]]

# convert all elements
new_list = [str(e) for e in mylist ]

# use it
for str1 in new_list:
    print str1

mylist = [[3, 95],[8, 92],[18, 25],[75, 78],[71, 84],-9999,[96, 50],[91, 70],-9999,[19, 60]]

for x in mylist:
    # convert one element and use it
    str1 = str(x) 
    print str1