Python动态数据结构

Python动态数据结构,python,dynamic,data-structures,Python,Dynamic,Data Structures,我将读取给定文本文件的行,并选择格式为(int,int\n)的多个数据块。每次的行数都不一样,所以我需要一个动态大小的Python数据结构。我还希望将这些块存储在2D数据结构中。如果您熟悉MATLAB编程,我希望有一个类似于结构a{n}n=数据块的数量,每个数据块包括上面提到的几行数据。 您推荐哪种类型的数据结构?如何实施? i、 e.A{0}=([1,2],[2,3],[3,4])A{1}=([1,1],[2,2],[5,5],[7,4])等等。 谢谢python列表可以包含列表以及任何不同的

我将读取给定文本文件的行,并选择格式为(int,int\n)的多个数据块。每次的行数都不一样,所以我需要一个动态大小的Python数据结构。我还希望将这些块存储在2D数据结构中。如果您熟悉MATLAB编程,我希望有一个类似于结构a{n}n=数据块的数量,每个数据块包括上面提到的几行数据。 您推荐哪种类型的数据结构?如何实施? i、 e.A{0}=([1,2],[2,3],[3,4])A{1}=([1,1],[2,2],[5,5],[7,4])等等。
谢谢

python列表可以包含列表以及任何不同的数据类型

l = []
l.append(2)      # l is now (2)
l.extend([3,2])  # l is now (2,3,2)
l.append([4,5])  # l is now (2,3,2,[4,5])
Append将作为参数提供的任何内容追加到列表中 而list.extend使给定的参数成为列表的尾部

import numpy as np
file = ('data.txt')
f = open(file)
i = 0
str2 = '.PEN_DOWN\n'
str3 = '.PEN_UP\n'
A = []
B = []
for line in f.readlines():
    switch_end = False 
    if (line == str2) or (~switch_end):
        if line[0].isdigit():
            A.append(line[:-1])
        elif line == str3:
            switch_end = True
            B.append(A)
            A = []
B.append(A)
f.close()
print(np.shape(A))
print(np.shape(B))
我猜您需要的列表会出现如下内容:

l = ([[1,2],[2,3],[3,4]],[[1,1],[2,2],[5,5],[7,4]])
PS:这里有一个链接可以帮助您快速开始学习python


通过在列表后面添加两个步骤,问题得以解决

import numpy as np
file = ('data.txt')
f = open(file)
i = 0
str2 = '.PEN_DOWN\n'
str3 = '.PEN_UP\n'
A = []
B = []
for line in f.readlines():
    switch_end = False 
    if (line == str2) or (~switch_end):
        if line[0].isdigit():
            A.append(line[:-1])
        elif line == str3:
            switch_end = True
            B.append(A)
            A = []
B.append(A)
f.close()
print(np.shape(A))
print(np.shape(B))

请记住,如果您正在从文本文件读取数据,格式是字符串,则需要使用int()将字符串转换为int。

您是指标准列表
A=[]
A.append([1,2],[2,3],[3,4])
A.append([1,1],[2,2],[5,5],[7,4])
?亲爱的布鲁诺,我不认为问问题甚至是基本问题都是坏事。您不必回答您不喜欢的问题。谢谢furas,我正在尝试。@Saman:“这个问题没有显示任何研究成果”(引自向下投票箭头的鼠标悬停文本),因此向下投票。列表很早就有了。您可能希望将OP指向官方文档,在第3章中,该词是“的意思”。更正式的文档在Python标准库参考中,在“:”下。我同意,但为了加深理解,我建议您了解一下该语言。这是正确的,在我的原始代码中,我已经考虑过这一点。谢谢我的朋友!