You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Python从给定的字符串与整数数组生成包含所有组合的大数组

嘿,这个需求用Python的标准库itertools里的product方法就能完美解决!它专门用来生成多个可迭代对象的笛卡尔积,刚好匹配你要的「所有元素组合」的需求,而且天生就支持两个以上的数组哦~

通用解决方案:生成任意数量数组的全组合

如果你只是需要所有可能的元素组合(不管顺序),itertools.product是最直接且通用的方案,步骤如下:

  1. 导入itertools模块
  2. 传入你要组合的所有数组给product方法
  3. 将生成的元组结果转换成列表格式

针对你给出的例子,代码实现如下:

import itertools

video4 = [1435, 1002]
file_list = ['file_1.ts', 'file_2.ts']

# 生成笛卡尔积并转换为列表的列表
bigger_array = [list(item) for item in itertools.product(file_list, video4)]
print(bigger_array)

运行后输出的结果是:

[['file_1.ts', 1435], ['file_1.ts', 1002], ['file_2.ts', 1435], ['file_2.ts', 1002]]
匹配你指定顺序的特殊场景

如果你需要的是先对应位置配对,再交叉配对的特定顺序(就是你例子里给出的目标数组顺序),可以用zip结合反转数组来实现,不过这个方法只适用于两个数组长度相同的情况:

video4 = [1435, 1002]
file_list = ['file_1.ts', 'file_2.ts']

# 先生成对应位置的配对
pairs_matched = list(zip(file_list, video4))
# 生成交叉位置的配对(反转第二个数组)
pairs_crossed = list(zip(file_list, reversed(video4)))
# 合并两个列表得到目标数组
bigger_array = pairs_matched + pairs_crossed
print(bigger_array)

这段代码的输出完全符合你给出的期望:

[['file_1.ts', 1435], ['file_2.ts', 1002], ['file_1.ts', 1002], ['file_2.ts', 1435]]
支持多数组的扩展示例

如果之后需要处理三个或更多数组,itertools.product依然能轻松搞定,比如三个数组的情况:

import itertools

arr1 = [1, 2]
arr2 = ['a', 'b']
arr3 = ['x', 'y']

all_combinations = [list(item) for item in itertools.product(arr1, arr2, arr3)]
print(all_combinations)

输出会包含所有8种可能的组合,完全满足多数组的组合需求。

内容的提问来源于stack exchange,提问作者SSA

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 05:13:13