我有两个像这样初始化的数组:
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/