两个不等长的列表之间的排列组合
我很难将自己的头围绕着我尝试实现的算法.我有两个列表,想从两个列表中进行特殊组合. 这是一个例子. names = ['a', 'b'] numbers = [1, 2] 在这种情况下的输出将是: [('a', 1), ('b', 2)] [('b', 1), ('a', 2)] 我的名称可能比数字更多,即len(names) >= len(numbers).这是一个带有3个名称和2个数字的示例: names = ['a', 'b', 'c'] numbers = [1, 2] 输出: [('a', 1), ('b', 2)] [('b', 1), ('a', 2)] [('a', 1), ('c', 2)] [('c', 1), ('a', 2)] [('b', 1), ('c', 2)] [('c', 1), ('b', 2)] 解决方案 注意:此答案是针对上面提出的特定问题.如果您来自Google,只是寻找一种在Python中获得笛卡
38 2023-03-20
编程技术问答社区
用Itertools生成二进制表
所以这就是我尝试的东西 list(itertools.combinations_with_replacement('01', 2)) 但这是生成[('0','0'),('0','1'),('1','1')] 我仍然需要一个('1','0')元组,有没有办法制作itertools也做组合和顺序? 解决方案 使用 list(itertools.product(*["01"] * 2)) 而是. 其他解决方案 将笛卡尔乘以价值自身,使用 itertools.product("01", repeat=2) 这将为您提供所有可能的组合. 其他解决方案 要概括列表(而不是字符串)使用: list(itertools.product(*[[0,1]]*2)) 这将给出 [(0, 0), (0, 1), (1, 0), (1, 1)]
12 2023-01-27
编程技术问答社区
有两个参数的多进程itertool组合
我想使用多处理运行以下函数: def bruteForcePaths3(paths, availableNodes): results = [] #start by taking each combination 2 at a time, then 3, etc for i in range(1,len(availableNodes)+1): print "combo number: %d" % i currentCombos = combinations(availableNodes, i) for combo in currentCombos: #get a fresh copy of paths for this combiniation currentPaths = list(paths) currentRemainingPat
44 2022-09-08
编程技术问答社区
python列表中的内存泄漏问题
身份列表包含大约 57000 张图像的大数组.现在,我正在 itertools.product() 的帮助下创建一个负面清单.这将整个列表存储在内存中,这是非常昂贵的,我的系统在 4 分钟后就挂了. 如何优化以下代码并避免节省内存?` for i in range(0, len(idendities) - 1): for j in range(i + 1, len(idendities)): cross_product = itertools.product(samples_list[i], samples_list[j]) cross_product = list(cross_product) for cross_sample in cross_product: negative = [] negative.append(cross_sample[0])
84 2022-09-08
编程技术问答社区
Python中重叠窗口的平均数
我正在尝试计算移动平均值,但在每个平均值之间设置步长.例如,如果我每 2 个元素计算 4 个元素窗口的平均值: data = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 这应该产生 [1, 2, 3, 4], [3, 4, 5, 6], [5, 6, 7, 8], [7, 8, 9, 10] 的平均值. window_avg = [2.5, 4.5, 6.5, 8.5] 我的数据是这样的,在处理之前结尾将被截断,因此与窗口大小相关的长度没有问题. 我读过一些关于如何在 Python 中做移动平均线的文章,似乎有很多 itertools 的用法;但是,迭代器一次只处理一个元素,我不知道如何在每次计算平均值之间设置步长.(如何在 Python 3 中计算移动平均值?) 我之前在 MATLAB 中也可以通过创建一个重叠的索引矩阵,然后索引数据向量并执行列均值(通过重复重叠向量创建矩阵).然而,由于这个向量相当大(~70 000 个元素,450 个样本
140 2022-09-08
编程技术问答社区
两个列表之间的排列组合
我在尝试实现一个算法时遇到了麻烦.我有两个列表,想从这两个列表中获取特定组合. 这是一个例子. names = 'a', 'b' numbers = 1, 2 在这种情况下的输出将是: [('a', 1), ('b', 2)] [('b', 1), ('a', 2)] 我的名字可能多于数字,例如 len(names) >= len(numbers).这是一个包含 3 个名称和 2 个数字的示例: names = 'a', 'b', 'c' numbers = 1, 2 输出: [('a', 1), ('b', 2)] [('b', 1), ('a', 2)] [('a', 1), ('c', 2)] [('c', 1), ('a', 2)] [('b', 1), ('c', 2)] [('c', 1), ('b', 2)] 解决方案 注意:此答案针对上面提出的特定问题.如果您从 Google 来到这里,并且只是想寻找一种在 Python 中获得笛卡尔积的方
44 2022-09-08
编程技术问答社区
识别一个值的连续出现
我有一个像这样的 df: Count 1 0 1 1 0 0 1 1 1 0 如果在 Count 中有两次或多次连续出现 1,我想在新列中返回一个 1,如果没有,我想返回一个 0.因此,在新列中,每行都会根据列 Count 中满足的条件获得一个 1.我想要的输出是: Count New_Value 1 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 1 1 0 0 我想我可能需要使用 itertools 但我一直在阅读它并且还没有遇到我需要的东西.我希望能够使用这种方法来计算任意数量的连续出现,而不仅仅是 2.例如,有时我需要连续出现 10 次,我这里的示例中只使用 2. 解决方案 你可以: df['consecutive'] = df.Count.groupby((df.Count != df.Count.shift()).cumsum()).tr
58 2022-08-04
编程技术问答社区
用Itertools来生成加扰的组合
我想要做的是获得所有组合以及每个组合的所有唯一排列.与替换功能的组合只让我到目前为止: from itertools import combinations_with_replacement as cwr foo = list(cwr('ACGT', n)) ## n is an integer 我对如何前进的直觉是做这样的事情: import numpy as np from itertools import permutations as perm bar = [] for x in foo: carp = list(perm(x)) for i in range(len(carp)): for j in range(i+1,len(carp)): if carp[i] == carp[j]: carp[j] = '' carp = carp[list(np.where(np.
68 2022-08-01
编程技术问答社区
Python itertools.product,参数数量可变
我正在尝试编写一个模块来使用 itertools.product 组合可变数量的列表. 我能得到的最接近的是: import itertools lists = [["item1","item2"],["A","b","C"], ["etc..."]] searchterms = list(itertools.product(lists)) print searchterms 这不起作用,因为lists是一个单一的列表,所以它只返回原始序列.但我不知道如何将列表变量的每个元素传递给 itertools. 感谢您的任何建议. 解决方案 您需要使用 * 将单个列表分成其组成列表: searchterms = list(itertools.product(*lists)) 请参阅解包参数列表上的 Python 教程部分.
96 2022-07-26
编程技术问答社区
Python-获取一个列表的所有组合
我知道我可以使用 itertools.permutation 来获得大小为 r 的所有排列.但是,对于 itertools.permutation([1,2,3,4],3) 它将返回 (1,2,3) 以及 (1,3,2). 我想过滤那些重复(即获得组合) 有没有一种简单的方法来获得所有排列(所有长度)? 如何将 itertools.permutation() 结果转换为常规列表? 解决方案 使用 itertools.combinations 和一个简单的循环来获得所有尺寸的组合. combinations 返回一个迭代器,因此您必须将其传递给 list() 以查看它的内容(或使用它). >>> from itertools import combinations >>> lis = [1, 2, 3, 4] for i in xrange(1, len(lis) + 1): # xrange will return the values 1,2,3,
74 2022-07-26
编程技术问答社区
Python合并两个具有所有可能排列组合的列表
我正在尝试找出将两个列表合并为所有可能组合的最佳方法.所以,如果我从两个这样的列表开始: list1 = [1, 2] list2 = [3, 4] 结果列表将如下所示: [[[1,3], [2,4]], [[1,4], [2,3]]] 也就是说,它基本上会生成一个列表列表,其中包含两者之间的所有潜在组合. 我一直在研究 itertools,我很确定它可以解决问题,但我无法想出一种方法让它以这种方式运行.我最接近的是: list1 = [1, 2, 3, 4] list2 = [5, 6, 7, 8] print list(itertools.product(list1, list2)) 生产者: [(1, 5), (1, 6), (1, 7), (1, 8), (2, 5), (2, 6), (2, 7), (2, 8), (3, 5), (3, 6), (3, 7), (3, 8), (4, 5), (4, 6), (4, 7), (4, 8)] 所以它
82 2022-07-26
编程技术问答社区
izip在Python 3.x中不工作
我正在尝试像这样导入 izip 模块: from itertools import izip 但是在最近从 Python 2.7 切换到 3 之后 - 它似乎不起作用. 我正在尝试写入 csv 文件: writer.writerows(izip(variable1,2)) 但我没有运气.仍然遇到错误. 解决方案 在 oython3 中,内置的 zip 与 2.X 中的 izip 执行相同的工作(返回生成器而不是列表),但稍快于这是一个内置函数. 这是python 2和3中的zip与python 2中的izip之间的基准: Pyhon 2.7: In [5]: %timeit list(izip(range(100), range(100))) 100000 loops, best of 3: 5.16 µs per loop In [6]: %timeit zip(range(100), range(100)) 100000 loops, bes
1576 2022-07-19
编程技术问答社区
pandas - python列表重复项筛选分组
问 题 有类似列表如下: list = ['aaa', 'aaa', 'aaa', 'aaa', 'ccc', 'ccc', 'aaa', 'aaa', 'aaa', 'aaa', 'ccc', 'ccc', 'ccc', 'aaa', 'aaa', 'ccc', 'ccc', 'ccc', 'ccc', 'ccc'] 希望能得到如下列表 [ [aaa,aaa,aaa], [aaa,aaa,aaa,aaa], [aaa,aaa], [...], ... ] 试了好久总是不行,太笨吧,求解答。 解决方案 前几位答主的思路让偶现在提炼出了问题正确的关键词(filter group),也意识到两个库有助于解决这类问题(itertools pandas) 放狗搜,找到的比较不错的答案特地贴在这里,供大家参考。 https://pythonpeixun.github.i... 知乎上有人问,Python中的列表按
216 2022-07-19
编程技术问答社区
Itertools Groupby问题
我正在努力了解itertoolss.groupby的工作原理.我有一个Excel电子表格,在第2列中有交货日期,然后在第2列中的目标LAT和第3列中的目标LOL中.早期我能够获取对包含的较大数组的子阵列进行分组的帮助他们.这是它的代码. with xlrd.open_workbook(file_location) as workbook: sheet = workbook.sheet_by_index(0) Dates = (sheet.cell_value(i,0) for i in range(sheet.nrows)) Day = [list(group) for key, group in itertools.groupby(Dates)] 现在我需要进一步迈出一步并将LAT分组为一个阵列和LON进入另一个阵列,但在当天将它们分组.我尝试结合上面列出的代码与这样的东西,但我不知道如何将LOT和LON变量合并到itertools Groupby功
324 2022-07-19
编程技术问答社区
Python'的itertools.product在Ruby中相当于什么?
我正在寻找一种在ruby中具有与python的itertools.product相同的方法.采用以下Python代码: from itertools import product chars = [] for i in range(97,123): chars.append(chr(i)) for a in range(1,3): for i in product(chars,repeat=a): s = ''.join(i) print s 输出这样的东西: a, b, c... x, y, z, aa, ab, ac... ax, ay, az, ba, bb, bc.. etc. 我试图将其翻译成Ruby: (1..2).each do |n| ('a'..'z').to_a.combination(n).each do |c| s = c.join puts s end end
646 2022-07-19
编程技术问答社区