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