Python 打印列表时避免使用链号

Python 打印列表时避免使用链号,python,list,chained,Python,List,Chained,我创建的代码从组合中生成了一个包含15个数字的列表,因此在对其进行排序后,可以看到一些序列包含大量链接的数字,如: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 16, 20] 我在想一种方法来控制它,只打印最多4个链式数字的列表: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 16, 20] (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11) >>>> 11 Ch

我创建的代码从组合中生成了一个包含15个数字的列表,因此在对其进行排序后,可以看到一些序列包含大量链接的数字,如:

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 16, 20]
我在想一种方法来控制它,只打印最多4个链式数字的列表:

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 16, 20]

(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11) >>>> 11 Chained numbers: 1 to 11.
So it won't be stored in file.txt.


[1, 2, 3, 6, 7, 8, 9, 11, 12, 16, 17, 18, 19, 22, 23]

(1, 2, 3) >>>> 3 chained, OK
(6, 7, 8, 9) >>>> 4 chained, OK
(11, 12) >>>> 2 chained, OK
(16, 17, 18, 19) >>>> 4 chained, OK
(22,23) 2 chained, OK. 
So this list will be stored in the file
你们能给我一个主意吗?一盏灯

我创建的代码,它生成一个包含25个数字列表中15个数字的所有可能组合的文件:

import itertools
my_file = open('file.txt', 'w')

ALL_25 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25]

for subset in itertools.combinations(ALL_25, 15):
    sort_subsets = sorted(subset)
    my_file.write("{0}\n".format(sort_subsets))  
    print(sort_subsets)
my_file.close()

如果可以将链转换为连续元素之间的差异,则更容易识别增量序列,即,
[1,2,3,4,7,8]
转换为
[1,1,1,3,1]
。此外,通过将其转换为字符串,可以更容易地搜索模式
111

import numpy as np                                          
import re                                                   

def validate(seq):                                          
    stl = "".join(np.diff(seq).astype(str))                 
    for x in re.findall("[1]+",stl):                        
        if len(x)>3:                                        
            return False                                    
    return True                                             

print validate([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 16, 20])
print validate([1, 2, 3, 6, 7, 8, 9, 11, 12, 16, 17, 18, 19, 22, 23])
输出

False
True

我不明白你的问题。例如,如果输入是
[1,2,3,4,5,6,7,8,9,20]
,那么输出应该是
[1,2,3,4,6,7,8,9,20]
还是
[1,2,3,4,9,20]
?你想突出显示“跳跃”吗<代码>[1,2,3,4,…,6,7,8,9,20]或
[1,2,3,4,…,9,20]
?我知道了,当我发布它的时候出了问题。让我解释一下,我有一个代码,它从25个数字中生成大量的15个组合,然后将所有组合保存到一个txt文件中。因此它创建了类似于[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]的列表,我想做的是消除上面带有链式数字的组合,可以保存最多有4个链式数字的组合,例如:[1,2,3,5,6,9,10,11,12,15,16,17,18,21,25]参见,(1,2,3)链式中有3个数字,(5,6)有2,(9,10,11,12)有4。因此,如果有一个链式(9,10,11,12,13)中有5个或更多数字的列表,它将被删除,但它似乎缩短了列表,我在这里做的是生成一个包含所有可能的数字组合的txt文件,而不是我想做的是删除这些链式数字序列,减少文件中组合的数量。因此,我的代码运行良好,在文件中每行生成一个列表,每个列表都有不同的编号,所以我只想“删除”(不保存在文件中)链接了四个以上编号的列表。@CairoLievore,您是说您有多个列表,并且希望删除其中包含序列号的所有列表吗?你能更新一下你的问题吗?差不多了,我的代码生成了列表,所以我想知道如何在打印出来并保存到数据库之前检查每个生成的列表file@CairoLievore,因为您正在提取组合,而顺序在这里并不重要,所以您可以尝试使用
random.sample()从列表中采样元素
顺序并不重要,但不能重复数字。看看我创建的代码,在pythonidle中运行它,它将生成许多列表并将其存储在file.txt中。所以我只想删除带有链号的列表,这很重要,并且会删除很多不必要的列表。