【问题标题】:Python - Iterating through list of list as a matrix (slice)Python - 将列表列表作为矩阵(切片)进行迭代
【发布时间】:2015-02-23 02:16:51
【问题描述】:

我想遍历列表列表。 也遍历列表中的每个列表。

list=[[0.9 0.8 0.1 0.2 0.5 ][0.5 0.3 0.2 0.1 0.7 ][0.6 0.1 0.3 0.2  0.9][0.3 0.7 0.4 0.1 0.8]]

因此遍历里面的每个列表,只到第三个位置,例如:

list=[[0.9 0.8 0.1][0.5 0.3 0.2][0.6 0.1 0.3][0.3 0.7 0.4 ]]

有人告诉我,怎么能做到这一点? 这是我的代码:

list=[]
i=0
j=0
data=open('BDtxt.txt','r')
for line in data.xreadlines():
    lista.append(line.strip().split())
while i<len(lista):
    while j < len(lista[i]):
        print lista[j]
        j+=1
    i+=1

输出是:

['0.9', '0.8', '0.1', '0.2', '0.5']
['0.5', '0.3', '0.2', '0.1', '0.7']
['0.6', '0.1', '0.3', '0.2', '0.9']
['0.3', '0.7', '0.4', '0.1', '0.8']

我希望输出是

[0.9 0.8 0.1]
[0.5 0.3 0.2]
[0.6 0.1 0.3]
[0.3 0.7 0.4]

【问题讨论】:

  • 另外,请阅读有关循环的 Python 文档
  • 对不起,salida is j
  • 如果您只想打印输出切片,请使用print(a[:,i:j])。如果您想对输出格式进行更多控制,请参阅np.set_printoptions 和重复问题,例如Pretty-printing of numpy.array。所有这些都有大量重复的问题。

标签: python arrays list numpy slice


【解决方案1】:

这称为获取数组的切片(不是迭代或循环)。使用 numpy.array。要读取您的 csv 文件,请使用 numpy.genfromtxt()pandas.read_csv() - 有大量关于 SO 的重复问题。

import numpy as np
a = np.array([[0.9,0.8,0.1,0.2,0.5], [0.5,0.3,0.2,0.1,0.7], [0.6,0.1,0.3,0.2,0.9], [0.3,0.7,0.4,0.1,0.8]])

a[:,0:3]
array([[ 0.9,  0.8,  0.1],
       [ 0.5,  0.3,  0.2],
       [ 0.6,  0.1,  0.3],
       [ 0.3,  0.7,  0.4]])

【讨论】:

  • 如果 numpy 不可用怎么办?
  • @Marcin:安装它。 numpy 和熊猫。让您的生活轻松。如果您的 IT 部门阻止安装,请接受它们。真的没有必要浪费时间对这些包含许多人年工作的优秀包进行弱原生 Python 重写。
  • 我该怎么做呢?如果我的列表里面的值变为两个并显示如下内容: [0.9 0.8] [0.5 0.3] [0.6 0.1] [0.3 0.7] 可以迭代吗?
  • 天使,然后拿下切片a[:,0:2]。您可以将变量用作切片索引,例如a[:,i:j] 并在 ,ij 或其他内容上运行 for 循环。请阅读numpy Basics of indexing 文档。你几乎可以做任何你想做的事情。
  • 但是如果你只想打印数组的一部分,就不需要嵌套循环。直接做print(a[:,0:3])
猜你喜欢
  • 1970-01-01
  • 2010-11-23
  • 2017-01-22
  • 2015-06-14
  • 2019-04-23
  • 2015-02-04
  • 2018-02-23
  • 2015-01-24
  • 1970-01-01
相关资源
最近更新 更多