python - 追加到数组[i](第一个元素)直到比较条件不再为真

标签 python arrays

我有两个像这样初始化的数组:

bins = [['1'], ['2'],...['10']]

tasks = ['1:x', '1:y', '2:x', '2:y', '2:z'.... '10:x', '10:y']

我试图遍历 [tasks] 并将 ':' 之前的字符串值与 [bins] 中的每个元素进行比较,如果它匹配附加 tasks[i]bins[i]。所以我期待 bins 像这样更新:

bins = [[1, 1:x, 1:y]...[10, 10:x, 10:y]]

然后我认为将 [tasks] 中 ':' 之前的内容拆分是有意义的,以便进行有效比较,所以 我在 ':' 之前拆分了 [tasks] 的内容并创建了一个新数组:

splits = ['1', '1', '2', '2', .....'10', '10']

现在在我的代码中,我实际上正在遍历 [splits] 并尝试附加 tasks[i] 如果 splits[i] 是在 bins[i] 中,使用以下代码:

for i in range(len(splits)):
    if (splits[i] in bins[i]) == True:
        bins[i].extend(tasks[i])

问题是上面的代码没有找到任何匹配项(从不返回 True),因此 bins[i] 没有更新。

我是否没有正确地遍历我的数组?我没有正确比较吗?我如何将 [bins] 的第一个元素与 [splits] 的每个元素进行比较,直到它不匹配并移动到 bins[i 的下一个元素] 并重复?

最佳答案

我相信这是因为您正在比较不同的数据类型。 Bin 包含数字列表,split 包含字符串。

看着你的问题,你似乎想要这样的东西:

for a in enumerate(bins):
    for b in enumerate(splits):
        if bins[a][0] == splits[b]
            bins[a].extend(tasks[b])
  • 调用 enumerate 与调用 range(len(bins)) 相同
  • 由于 bin 中的元素是整数,在列表中您需要索引 i 上的元素和列表中的第一个(也是唯一一个元素)(如果 i 为 0那将是 bins[0],它是 [1],然后是 [1][0],1 是索引 0 上的元素)

关于python - 追加到数组[i](第一个元素)直到比较条件不再为真,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70308582/

相关文章:

java - 如何创建一个对多个变量产生影响的方法?

ios - '无效更新 : invalid number of rows in section 0

php - 显示基于数组的复选框列表

python - 如何配置单个 flask 应用程序来处理多个域?

python - log4cplus:调用 tkinter 文件对话框时 python 中的错误

python - PySpark 中 pandas.cut() 的等价物是什么?

Python C API 读取列表列表,分配内存和全局变量

php - 在php中用mysql fetch结果填充二维数组

arrays - 为什么我不能对数组声明使用类型推断?

python - Scrapy spider 产生了几个项目,但管道只在每个请求的第一个被调用