如何将9个字符串随机生成唯一4元组并导出至TXT文件
生成唯一4字符串组合并导出至TXT文件
需求描述
从包含9个不同字符串的列表中,生成唯一的4字符串组合,随机化后导出到TXT文件。当前代码无法实现分组为4元组的功能,现有代码如下:
import random a = "0xa5" b = "0x1" c = "0xE5924" d = "0xE59" e = "0xC60aE" g = "0xd7F1DF" h = "0xDEF1717" i = "0xA102072A4C07F9" j = "0x934A0E2c6C427D9F25" my_list = [a,b,c,d,e,g,h,i,j] random.shuffle(my_list) myset = set(my_list) print(myset)
期望输出示例:
["0xa5","0x1","0xE5924","0xE59"], ["0xa5","0x1","0xE5924","0xA102072A4C07F9"],
解决方案
要生成唯一的4元素组合,推荐使用itertools.combinations(生成无序不重复组合),如果需要随机化输出顺序,可再打乱组合列表。以下是完整实现代码:
import itertools import random # 定义所有目标字符串 str_list = [ "0xa5", "0x1", "0xE5924", "0xE59", "0xC60aE", "0xd7F1DF", "0xDEF1717", "0xA102072A4C07F9", "0x934A0E2c6C427D9F25" ] # 生成所有不重复的4元素组合(无序,避免重复组合) all_unique_combinations = list(itertools.combinations(str_list, 4)) # 随机打乱组合的输出顺序(可选,不需要可删除此行) random.shuffle(all_unique_combinations) # 格式化为需求的字符串样式 formatted_output = [] for combo in all_unique_combinations: line = f'["{"","".join(combo)}"],' formatted_output.append(line) # 写入TXT文件 with open("unique_4tuples.txt", "w", encoding="utf-8") as file: file.write("\n".join(formatted_output))
关键说明
itertools.combinations(str_list, 4):生成列表中所有4个元素的无序唯一组合,例如["a","b","c","d"]与["b","a","c","d"]会被视为同一组合,仅生成一次,确保唯一性。- 若需要有序排列(不同顺序算不同组合),将
combinations替换为itertools.permutations即可,但此时生成的数量会远多于组合数(9取4的排列共3024个,组合共126个)。 - 代码最后会将所有格式化后的组合写入
unique_4tuples.txt文件,每行对应一个4元组。
内容的提问来源于stack exchange,提问作者Bouncyknights123
相关产品推荐
相关产品推荐

