[英]How to add elements in a list of strings to an array in python
我有一個看起來像這樣的字符串列表,我需要將每個字符串的第一,第二和第三項添加到整數列表ab和c中
剪裁給我
[['3', '5', '10'], ['2', '8', '15'], ['7', '9', '25'], ['4', '6', '20'], ['9', '12', '50'], ['5', '7', '22'], ['3', '8', '17'], ['6', '9', '24'], ['8', '11', '40'], ['7', '10', '30'], []]
這樣a = [3,2,7,...,7] b = [5,8,9,...,10] c = [10,15,...,30]
(也希望這些是整數而不是字符串)
我試圖用
cuts[i] = cuts[i].strip(",")
認為這會給我[[3] [5] [10]],這會讓我添加一個for循環,但是python告訴我列表沒有strip屬性
以下是基本形式的列表理解:
data = [['3', '5', '10'], ['2', '8', '15'], ['7', '9', '25'], ['4', '6', '20'],
['9', '12', '50'], ['5', '7', '22'], ['3', '8', '17'], ['6', '9', '24'],
['8', '11', '40'], ['7', '10', '30'], []]
a = [int(x[0]) for x in data if len(x) >= 1]
b = [int(x[1]) for x in data if len(x) >= 2]
c = [int(x[2]) for x in data if len(x) >= 3]
print a
print b
print c
或者,將它們保留在二維列表中:
abc = [[int(x[i]) for x in data if len(x) >= i+1] for i in range(len(data[0]))]
print abc
輸出:
[[3, 2, 7, 4, 9, 5, 3, 6, 8, 7],
[5, 8, 9, 6, 12, 7, 8, 9, 11, 10],
[10, 15, 25, 20, 50, 22, 17, 24, 40, 30]]
我假設cuts
結束時的空列表是一個錯字-否則您的要求就沒有意義了,因為空列表中沒有第一,第二和第三元素。 您可以隨時使用
cuts = [cut for cut in cuts if len(cut) > 0]
如果您想縮小尺寸。
無論如何,一旦刪除了該空列表,您所需要的就是一種zip
,可以這樣完成:
>>> cuts = [['3', '5', '10'], ['2', '8', '15'], ['7', '9', '25'], ['4', '6', '20'], ['9', '12', '50'], ['5', '7', '22'], ['3', '8', '17'], ['6', '9', '24'], ['8', '11', '40'], ['7', '10', '30']]
>>> a,b,c = ([int(s) for s in strings] for strings in zip(*cuts))
>>> a
[3, 2, 7, 4, 9, 5, 3, 6, 8, 7]
>>> b
[5, 8, 9, 6, 12, 7, 8, 9, 11, 10]
>>> c
[10, 15, 25, 20, 50, 22, 17, 24, 40, 30]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.