簡體   English   中英

將列表中的每個元素轉換為單獨的字符串?

[英]Turn each element of a list into a separate string?

我有以下清單:

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

在這里面,每個元素是一個列表本身,除了-9999值其是int的值。

假設我要使用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

這應該工作:

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

map將函數應用於myList每個元素。 使用str函數可以將列表中的每個元素轉換為字符串,因此您可以自由使用它。

您在這里犯了兩個單獨的錯誤。 首先,在每次迭代中,您都使用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)

您還使用了不正確的enumerate enumerate用於獲取列表中每個項目旁邊的索引值。 您的原始代碼將索引和項目都視為i 即。 i = (0, [3, 95]) ,實際上您希望它們分開。 如果您需要這些索引,請使用此:

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

其中i = 0elem = [3, 95]

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM