Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:While循环超出了条件_Python_Arraylist_While Loop_Conditional Statements_Difflib - Fatal编程技术网

Python:While循环超出了条件

Python:While循环超出了条件,python,arraylist,while-loop,conditional-statements,difflib,Python,Arraylist,While Loop,Conditional Statements,Difflib,我编写了下面的代码来生成一个包含25个列表的列表,其中每个列表都有40个元素。然而,主要的问题是所有列表的序列元素之间的相似性很低(我尝试应用difflib中的SequenceMatcher)。虽然条件是当内部列表的数量=25时停止循环,但我得到32个内部列表 这是我的密码: import random from difflib import SequenceMatcher def string_converter(input_list): string = ""

我编写了下面的代码来生成一个包含25个列表的列表,其中每个列表都有40个元素。然而,主要的问题是所有列表的序列元素之间的相似性很低(我尝试应用difflib中的SequenceMatcher)。虽然条件是当内部列表的数量=25时停止循环,但我得到32个内部列表

这是我的密码:

import random
from difflib import SequenceMatcher


def string_converter(input_list):
    string = ""
    for m in input_list:
        string += str(m)
    return string


lists = []
strings = []
e = 0

while e <= 25:
    list_one = []
    n = 0
    for i in range(40):
        if 7 < n < 33:
            i = random.randint(0, 3)
            list_one.append(i)
            n += 1
        else:
            i = random.randint(0, 2)
            list_one.append(i)
            n += 1
    list_string = string_converter(list_one)
    if e == 0:
        strings.append(list_string)
        lists.append(list_one)
        e = 1
    else:
        for s in strings:
            if SequenceMatcher(None, list_string, s).ratio() < 0.7:
                strings.append(list_string)
                lists.append(list_one)
                e += 1

print(e)
print(lists)
print(len(lists))
print(strings)
随机导入
从difflib导入SequenceMatcher
def字符串转换器(输入列表):
string=“”
对于输入列表中的m:
字符串+=str(m)
返回字符串
列表=[]
字符串=[]
e=0

然而,您的问题是这个循环,当您迭代
字符串时,它可以将
列表的多个副本附加到
列表中:

for s in strings:
    if SequenceMatcher(None, list_string, s).ratio() < 0.7:
        strings.append(list_string)
        lists.append(list_one)
        e += 1

您的问题是这个循环,当您在
字符串上迭代时,它会将
列表的多个副本附加到
列表

for s in strings:
    if SequenceMatcher(None, list_string, s).ratio() < 0.7:
        strings.append(list_string)
        lists.append(list_one)
        e += 1

可能u wna do
而len(列表)可能u wna do
而len(列表)它告诉我一个错误:。if all(SequenceMatcher(None,list_string,s).ratio()<0.7):类型错误:“bool”对象不可用iterable@KarimYosefRezk您需要包含迭代器部分:
all(SequenceMatcher(无,列表字符串,s).ratio()<0.7表示字符串中的s)
最后一个问题:它返回26而不是25,你能告诉我解释吗?@KarimYosefRezk这是因为你有
e它告诉我一个错误:。if all(SequenceMatcher(None,list_string,s).ratio()<0.7):类型错误:“bool”对象不可用iterable@KarimYosefRezk您需要包含迭代器部分:
all(SequenceMatcher(无,列表字符串,s).ratio()<0.7表示字符串中的s)
最后一个问题:它返回26而不是25,你能告诉我解释吗?@KarimYosefRezk这是因为你有
e