[英]How to get this “hello='23'” in place of this “hello=\'23\'”
[英]List of strings in ints ['123 121','42 23','23 23']
['136 145', '136 149', '137 145', '138 145', '139 145', '142 149', '142 153', '145 153']
我想將上面的列表元素轉換為整數,我知道僅對[int(x) for x in mylist]
使用[int(x) for x in mylist]
行不通的。 所以我的問題是如何將我擁有的清單轉換為整數清單。
>>> L = ['136 145', '136 149', '137 145', '138 145', '139 145', '142 149', '142 153', '145 153']
>>> [int(y) for x in L for y in x.split()]
[136, 145, 136, 149, 137, 145, 138, 145, 139, 145, 142, 149, 142, 153, 145, 153]
首先分割文本, 然后轉換為int:
[map(int, elem.split()) for elem in originallist]
對於Python 3,其中map()
返回一個生成器,而不是一個列表,您可以嵌套列表理解:
[[int(n) for n in elem.split()] for elem in originallist]
在Python 2下同樣可以正常工作。
快速演示:
>>> originallist = ['136 145', '136 149', '137 145', '138 145', '139 145', '142 149', '142 153', '145 153']
>>> [[int(n) for n in elem.split()] for elem in originallist]
[[136, 145], [136, 149], [137, 145], [138, 145], [139, 145], [142, 149], [142, 153], [145, 153]]
您可以通過將elem.split()
循環移到外部列表理解末尾來刪除嵌套:
[int(n) for elem in originallist for n in elem.split()]
這使:
[136, 145, 136, 149, 137, 145, 138, 145, 139, 145, 142, 149, 142, 153, 145, 153]
由於我會竭盡全力避免嵌套列表的理解(我永遠不記得順序),所以我會做類似的事情:
from itertools import chain
x = ['136 145', '136 149', '137 145', '138 145', '139 145', '142 149', '142 153', '145 153']
gen = chain.from_iterable(elem.split() for elem in x)
integers = [int(elem) for elem in gen]
你可以這樣嘗試
>>> import re
>>> l=['136 145', '136 149', '137 145', '138 145', '139 145', '142 149', '142 153', '145 153']
>>> map(int, re.findall(r'\d+',' '.join(l)))
[136, 145, 136, 149, 137, 145, 138, 145, 139, 145, 142, 149, 142, 153, 145, 153]
>>> L = ['136 145', '136 149', '137 145', '138 145', '139 145', '142 149', '142 153', '145 153']
>>> map(int, ' '.join(L).split())
[136, 145, 136, 149, 137, 145, 138, 145, 139, 145, 142, 149, 142, 153, 145, 153]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.