簡體   English   中英

用逗號分割字符串列表

[英]Split a list of strings by comma

我想轉換

['60,78', '70,77', '80,74', '90,75', '100,74', '110,75']

進入

['60', '78', '70', '77'.. etc]

我以為我可以用

for word in lines:
    word = word.split(",")
    newlist.append(word)
return newlist

但這會產生這個:

[['60', '78'], ['70', '77'], ['80', '74'], ['90', '75'], ['100', '74'], ['110', '75']]

任何人都可以提供解決方案嗎?

您需要使用list.extend而不是list.append

newlist = []
for word in lines:
    word = word.split(",")
    newlist.extend(word)  # <----
return newlist

或者,使用列表理解

>>> lst = ['60,78', '70,77', '80,74', '90,75', '100,74', '110,75']
>>> [x for xs in lst for x in xs.split(',')]
['60', '78', '70', '77', '80', '74', '90', '75', '100', '74', '110', '75']

str.split實際上返回一個列表。

返回字符串中單詞的列表,使用sep作為分隔符字符串。

由於您將返回的列表附加到newlist ,您將獲得一個列表列表。 而是使用list.extend方法,就像這樣

for word in lines:
    newlist.extend(word.split(","))

但是您可以像這樣簡單地使用嵌套列表理解

>>> data = ['60,78', '70,77', '80,74', '90,75', '100,74', '110,75']
>>> [item for items in data for item in items.split(",")]
['60', '78', '70', '77', '80', '74', '90', '75', '100', '74', '110', '75']

使用itertools.chain

from itertools import chain

print(list(chain.from_iterable(ele.split(",") for ele in l)))
['60', '78', '70', '77', '80', '74', '90', '75', '100', '74', '110', '75']

您必須壓平鏈的項目越多,它的效率就越高:

In [1]: l= ["1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20" for _ in range(100000)]

In [2]: from itertools import chain

In [3]: l= ["1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30" for _ in range(10000)]

In [4]: timeit (list(chain.from_iterable(ele.split(",") for ele in l)))
100 loops, best of 3: 17.7 ms per loop

In [5]: timeit  [item for items in l for item in items.split(",")]
10 loops, best of 3: 20.9 ms per loop

我認為這是最簡單的方法(感謝幫助解決此問題的朋友)

list=['60,78', '70,77', '80,74', '90,75', '100,74', '110,75']
for word in list:
    chapter, number = word.split(',') #word = word.split(',')
    print(word)

暫無
暫無

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

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