【发布时间】:2021-04-09 06:52:40
【问题描述】:
我编写了下面的代码来生成一个包含 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)
【问题讨论】:
-
也许你想用
while len(lists) <= 25而不是while e <= 25?
标签: python arraylist while-loop conditional-statements difflib