在python中将列表分配给数组

时间:2015-03-18 14:09:21

标签: python arrays list

我有一个数据文件“list_2_array.dat”,如下所示。首先,我想阅读它,然后我想控制第四列元素以进行进一步的数学运算。

1 2 3 10  
4 5 6 20  
1 3 5 30  
2 1 4 40  
3 2 3 50  

我尝试了一段代码

b_list = []
file=open('/path_to_file/list_2_array.dat', 'r')
m1=[(i.strip()) for i in file]

for j in m1:
    b_list.append(j.replace('\n','').split(' '))

for i in range(5):
    print b_list[i][3]

给出输出

10  
20  
30  
40  
50  

我不想打印元素,我有兴趣首先将第四列元素分配给一维数组,以便我以后可以轻松处理它们。我尝试了几种方法来实现这一点,如下所示,但是没有效果

   import numpy as np
   for i in range(5):
       arr = array (b_list[i][3])

4 个答案:

答案 0 :(得分:0)

data = """1 2 3 10
4 5 6 20
1 3 5 30
2 1 4 40
3 2 3 50"""
fourth = [int(line.split()[3]) for line in data.split("\n")]
print(fourth)

输出:

[10, 20, 30, 40, 50]

答案 1 :(得分:0)

f=open('/path_to_file/list_2_array.dat', 'r')
l = []
for line in f.readlines():
    l.append(int(line.strip().split()[-1]))
array=np.array(l)

或更多pythonic我猜..:

f=open('/path_to_file/list_2_array.dat', 'r')
l = [int(line.strip().split()[-1]) for line in f.readlines()]
array=np.array(l)

答案 2 :(得分:0)

def get_last_col(file):
last_col = [int(line.split()[-1]) for line in open(file)]
return last_col

答案 3 :(得分:0)

首先,永远不要分配变量名,如str,file,int。 接下来你差不多了。

b_list = []
c_list = []
file=open('/path_to_file/list_2_array.dat', 'r')
m1=[(i.strip()) for i in file]

for j in m1:
    b_list.append(j.replace('\n','').split(' '))

for i in range(5):
    c_list.append(b_list[i][3])
print c_list

我真的不喜欢这个解决方案所以我改变了@ user2994666他/她的解决方案:

file_location = "/path_to_file/list_2_array.dat"
def get_last_col(file_location):
    last_col = [int(line.split()[-1]) for line in open(file_location)]
    return last_col

print get_last_col(file_location)

请注意,[ - 1]解决方案会产生最后一列,在您的情况下,这不会产生任何问题。如果您有一个包含5列的文件,并且您仍然对第4列感兴趣,则使用[3]而不是[-1]