我是python编程的新手。有人建议某种方法来执行以下操作:
整个数据存储在一个文件中。我不能打扰这个序列。
我想提取出链的第一个和最后一个节点。像这样有几个这样的链。数据内容是Giga Byte。
我对如何在python中解决这个问题一无所知。有人可以帮助你。
答案 0 :(得分:1)
我不确定你的序列是如何工作的,特别是如何选择开始和结束元素。所以我所做的基本上是我设置了一个起始值,然后匹配一次,之后它试图一遍又一遍地找到相同的值。
首先,我为数据制作了一个生成器。正如你所提到的,你有很多数据,所以你可能会为这些行提供某种顺序生成器。我用静态生成器模拟产生示例行:
>>> def dataReader():
yield 'a1=hi'
yield 'b1=hello'
yield 'a1=how'
yield 'b1=to'
yield 'a1=hello'
yield 'b1=python'
yield 'a1=format'
yield 'b1=computer'
yield 'a1=python'
yield 'b1=good programming language'
然后我设置一个空列表来保存结果和最后一个元素,它被初始化为起始值
>>> lst = []
>>> last = 'hi' # as we want to begin with 'hi' which does not have a duplicate?
接下来,我浏览数据,用等号分割并比较最后一个值。我使用值None
来标记前一个值已经找到它的重复。为了使它更简单,我现在完全忽略key
,但如果你需要确保在匹配新值时前一个键与当前键不同,你可以轻松添加更多条件。
>>> for line in dataReader():
key, value = line.split('=')
if last == None:
lst.append(line)
last = value
elif last == value:
lst.append(line)
last = None
>>> lst
['a1=hi', 'b1=hello', 'a1=hello', 'b1=python', 'a1=python', 'b1=good programming language']
答案 1 :(得分:0)
首先查看“列表”是什么,例如。
data[0]=hi
data[1]=hello
data[2]=how
data[3]=to
data[4]=hello
data[5]=python
data[6]=format
data[7]=computer
data[8]=python
data[9]=good programming language
或
多维列表,具体取决于您的数据。
data[0][0]=hi
data[0][1]=hello
data[0][2]=how
data[0][3]=to
data[1][0]=hello
data[1][1]=python
data[1][2]=format
data[1][3]=computer
data[1][4]=python
data[1][5]=good programming language