Tag: 列表

Python:将列表切成n个几乎等长的分区

我正在寻找一种快速,干净,pythonic的方式来将列表分割成几乎相等的分区。 partition([1,2,3,4,5],5)->[[1],[2],[3],[4],[5]] partition([1,2,3,4,5],2)->[[1,2],[3,4,5]] (or [[1,2,3],[4,5]]) partition([1,2,3,4,5],3)->[[1,2],[3,4],[5]] (there are other ways to slice this one too) 有几个答案在这里迭代列表切片运行非常接近我想要的,除了他们的重点是列表的大小 ,我关心列表的数量 (其中一些还填充无)。 显然,这些都是微不足道的,但我正在寻找一个最佳实践。 同样,人们在这里指出了很好的解决scheme。 如何将一个列表分成大小均匀的块? 对于一个非常类似的问题,但我更感兴趣的分区数量比特定的大小,只要在1以内。再次,这是微不足道的可转换,但我正在寻找一个最佳实践。

内存错误和列表限制?

为了科学目的,我需要生成大的(非常)matrix(马尔可夫链)。 我执行微积分,我把20301元素列表(=我matrix的一行)。 我需要在内存中的所有这些数据继续下一步马尔可夫步骤,但如果需要,我可以将它们存储在其他地方(例如文件),即使它会减慢我的马尔可夫链走查。 我的电脑(科学实验室):双氙气6核/ 12线程,12GB内存,操作系统:win64 Traceback (most recent call last): File "my_file.py", line 247, in <module> ListTemp.append(calculus) MemoryError 微积分结果示例:9.233747520008198e-102(是,超过1/9000) 存储第19766个元素时引发错误: ListTemp[19766] 1.4509421012263216e-103 如果我走得更远 Traceback (most recent call last): File "<pyshell#21>", line 1, in <module> ListTemp[19767] IndexError: list index out of range 所以这个列表在19767循环中有一个内存错误。 问题: 列表中是否有内存限制? 这是一个“按列表限制”还是“每个脚本的全局限制”? 如何绕过这些限制? 任何可能的想法? 它会帮助使用numpy,python64吗? 与他们的内存限制是什么? 其他语言呢?

python:列表索引超出范围错误

我写了一个简单的Python程序 l=[1,2,3,0,0,1] for i in range(0,len(l)): if l[i]==0: l.pop(i) 这给了我错误'列表索引超出范围'在线if l[i]==0: debugging后,我可以看出, i越来越增加,列表正在减less。 但是,我有循环终止条件i < len(l) 。 那为什么我得到这样的错误?

检查平面列表中的重复项

例1 ['one', 'two', 'one']应该返回True 。 例2 ['one', 'two', 'three']应该返回False 。

Python:统计列表中单词的频率

对于程序分配,我需要计算文件中单词的频率。 我一直在寻找这个网站和其他人的帮助,但是他们展示的方法是我们没有在课堂上学到的,所以我不能使用它们。 到目前为止,我发现的方法使用了我们还没有学到的计数器或字典。 我已经从包含所有单词的文件中创build了列表,但不知道如何find列表中每个单词的频率。 我知道我将需要一个循环来做到这一点,但无法弄清楚。 任何帮助将不胜感激。 谢谢。 编辑:所以事实certificate,我需要创build两个名单,一个为独特的话,另一个为单词的频率。 我将不得不根据频率列表对唯一的单词列表进行sorting,使得频率最高的单词在列表中排在第一位。 我在文本中有devise,但仍然有点不确定如何在Python中实现它,所以我将能够正确地sorting列表。 我正在使用Python 3.3 这是基本的devise: original list = ["the", "car",….] newlst = [] frequency = [] for word in the original list if word not in newlst newlst.append(word) set frequency = 1 else increase the frequency sort newlst based on frequency list

检查string是否以列表中的某个string结尾

编写下面的代码的pythonic方式是什么? extensions = ['.mp3','.avi'] file_name = 'test.mp3' for extension in extensions: if file_name.endswith(extension): #do stuff 我有一个模糊的记忆, for循环的显式声明可以避免,并在if条件写入。 这是真的?

如何返回字典键作为Python中的列表?

在Python 2.7中 ,我可以将字典键 , 值或项作为列表: >>> newdict = {1:0, 2:0, 3:0} >>> newdict.keys() [1, 2, 3] 现在,在Python> = 3.3 ,我得到这样的东西: >>> newdict.keys() dict_keys([1, 2, 3]) 所以,我必须这样做才能得到一个清单: newlist = list() for i in newdict.keys(): newlist.append(i) 我想知道,有没有更好的方法来返回Python 3中的列表?

使用大于或小于运算符比较两个列表

我注意到最近直接比较了两个整数列表的一段代码: a = [10,3,5, …] b = [5,4,3, …,] if a > b: … 这似乎list_a ,但我想如果list_a的所有元素都大于list_b ,那么它将返回True ,如果每个元素相等,或者list_b的元素大于list_a则list_a 。 所以我testing了一下: >>> a=[3,3,3,3] >>> b=[4,4,4,4] >>> a>b False >>> b>a True 好的,这个工作。 如下所示: >>> b = [1,1,1,1] >>> a = [1,1,1,1] >>> a>b False >>> b>a False 但是当它变得更模糊: >>> a=[1,1,3,1] >>> b=[1,3,1,1] >>> a>b False >>> […]

如何将string列表转换为Python中的整数

在我的Python脚本中,我有: user = nuke.getInput("Frames Turned On") userLst = [user] print userLst 结果: ['12,33,223'] 我想知道如何删除列表中的' ,或以某种方式将其转换为int?

删除列表中的重复项目(Prolog)

我对Prolog完全陌生,并尝试一些练习。 其中之一是: 编写一个谓词集(InList,OutList),它将任意列表作为input,并返回一个列表,其中input列表的每个元素只出现一次。 这是我的解决scheme: member(X,[X|_]). member(X,[_|T]) :- member(X,T). set([],[]). set([H|T],[H|Out]) :- not(member(H,T)), set(T,Out). set([H|T],Out) :- member(H,T), set(T,Out). 我不允许使用任何内置谓词(即使不使用not/1也会更好)。 问题是, set/2给出了多个相同的解决scheme。 input列表中的重复次数越多,结果就越多。 我究竟做错了什么? 提前致谢。