如何在列表中搜索,如果没有找到,请选择最接近的最高值长生不老药



我有这两个列表。

一个列表是:

[~U[2020-05-20 11:00:00.123456Z], ~U[2020-05-20 11:20:00.123456Z],
~U[2020-05-20 11:40:00.123456Z]]

第二个列表是:

["00_02_000.jpg", "00_06_000.jpg", "00_14_000.jpg", "00_18_000.jpg",
"00_22_000.jpg", "00_30_000.jpg", "00_34_000.jpg", "00_38_000.jpg",
"00_42_000.jpg", "00_46_000.jpg", "00_54_000.jpg", "00_58_000.jpg",
"01_02_000.jpg", "01_10_000.jpg", "01_14_000.jpg", "01_18_000.jpg",
"01_22_000.jpg", "01_30_000.jpg", "01_34_000.jpg", "01_38_000.jpg",
"01_42_000.jpg", "01_50_000.jpg", "01_54_000.jpg", "01_58_000.jpg",
"02_02_000.jpg", "02_06_000.jpg", "02_25_000.jpg", "02_29_000.jpg",
"02_33_000.jpg", "02_41_000.jpg", "02_45_000.jpg", "02_49_000.jpg",
"02_53_000.jpg", "03_01_000.jpg", "03_05_000.jpg", "03_09_000.jpg",
"03_13_000.jpg", "03_21_000.jpg", "03_25_000.jpg", "03_29_000.jpg",
"03_33_000.jpg", "03_41_000.jpg", "03_45_000.jpg", "03_49_000.jpg",
"03_53_000.jpg", "04_01_000.jpg", "04_05_000.jpg", "04_09_000.jpg",
"04_13_000.jpg", "04_21_000.jpg", ...]

现在,我首先想将第一个列表转换为。

["00_00_000.jpg", "20_00_000.jpg", "40_00_000.jpg"]

这是通过strftime完成的。

然后我想创建一个第 3 个列表。 大小为 3,其中仅包括

["00_00_000.jpg", "20_00_000.jpg", "40_00_000.jpg"]

如果它存在于第二个列表中。

如果第二个列表中不存在,则选择它的下一个值。

示例在上面的列表中,没有00_00_000.jpg所以我想选择00_02_000.jpg20_00_000.jpg一样

更新:结果列表要么应该是这个

["00_00_000.jpg", "20_00_000.jpg", "40_00_000.jpg"]

这 3 个的巢值。

"00_00_000.jpg"的下一个值"00_02_000.jpg"相同,如果20_00_000.jpg不存在,下一个值可以21_00_000.jpg

更新:

而值为

values =
["00_08_000.jpg", "00_18_000.jpg", "00_28_000.jpg", "00_38_000.jpg",
"00_48_000.jpg", "00_58_000.jpg", "01_08_000.jpg", "01_18_000.jpg",
"01_28_000.jpg", "01_38_000.jpg", "01_48_000.jpg", "01_58_000.jpg",
"02_08_000.jpg", "02_18_000.jpg", "02_28_000.jpg", "02_38_000.jpg",
"02_48_000.jpg", "02_58_000.jpg", "03_08_000.jpg", "03_18_000.jpg",
"03_28_000.jpg", "03_38_000.jpg", "03_48_000.jpg", "03_58_000.jpg",
"04_08_000.jpg", "04_18_000.jpg", "04_28_000.jpg", "04_38_000.jpg",
"04_48_000.jpg", "04_58_000.jpg", "05_08_000.jpg", "05_18_000.jpg",
"05_28_000.jpg", "05_38_000.jpg", "05_48_000.jpg", "05_58_000.jpg",
"06_08_000.jpg", "06_18_000.jpg", "06_28_000.jpg", "06_38_000.jpg",
"06_48_000.jpg", "06_58_000.jpg", "07_08_000.jpg", "07_18_000.jpg",
"07_28_000.jpg", "07_38_000.jpg", "07_48_000.jpg", "07_58_000.jpg",
"08_08_000.jpg", "08_18_000.jpg", "08_28_000.jpg", "08_38_000.jpg",
"08_48_000.jpg", "08_58_000.jpg", "09_08_000.jpg", "09_18_000.jpg",
"09_28_000.jpg", "09_38_000.jpg", "09_48_000.jpg", "09_58_000.jpg",
"10_08_000.jpg", "10_18_000.jpg", "10_28_000.jpg", "10_38_000.jpg",
"10_48_000.jpg", "10_58_000.jpg", "11_08_000.jpg", "11_18_000.jpg",
"11_28_000.jpg", "11_38_000.jpg", "11_48_000.jpg", "11_58_000.jpg",
"12_08_000.jpg", "12_18_000.jpg", "12_28_000.jpg", "12_38_000.jpg",
"12_48_000.jpg", "12_58_000.jpg", "13_08_000.jpg", "13_18_000.jpg",
"13_28_000.jpg", "13_38_000.jpg", "13_48_000.jpg", "13_58_000.jpg",
"14_08_000.jpg", "14_18_000.jpg", "14_28_000.jpg", "14_38_000.jpg",
"14_48_000.jpg", "14_58_000.jpg", "15_08_000.jpg", "15_18_000.jpg",
"15_28_000.jpg", "15_38_000.jpg", "15_48_000.jpg", "15_58_000.jpg",
"16_08_000.jpg", "16_18_000.jpg", "16_28_000.jpg", "16_38_000.jpg",
"16_48_000.jpg", "16_58_000.jpg", "17_08_000.jpg", "17_18_000.jpg",
"17_28_000.jpg", "17_38_000.jpg", "17_48_000.jpg", "17_58_000.jpg",
"18_08_000.jpg", "18_18_000.jpg", "18_28_000.jpg", "18_38_000.jpg",
"18_48_000.jpg", "18_58_000.jpg", "19_08_000.jpg", "19_18_000.jpg",
"19_28_000.jpg", "19_38_000.jpg", "19_48_000.jpg", "19_58_000.jpg",
"20_08_000.jpg", "20_18_000.jpg", "20_28_000.jpg", "20_38_000.jpg",
"20_48_000.jpg", "20_58_000.jpg", "21_08_000.jpg", "21_18_000.jpg",
"21_28_000.jpg", "21_38_000.jpg", "21_48_000.jpg", "21_58_000.jpg",
"22_08_000.jpg", "22_18_000.jpg", "22_28_000.jpg", "22_38_000.jpg",
"22_48_000.jpg", "22_58_000.jpg", "23_08_000.jpg", "23_18_000.jpg",
"23_28_000.jpg", "23_38_000.jpg", "23_48_000.jpg", "23_58_000.jpg",
"24_08_000.jpg", "24_18_000.jpg", "24_28_000.jpg", "24_38_000.jpg",
"24_48_000.jpg", "24_58_000.jpg", "25_08_000.jpg", "25_18_000.jpg",
"25_28_000.jpg", "25_38_000.jpg", "25_48_000.jpg", "25_58_000.jpg",
"26_08_000.jpg", "26_18_000.jpg", "26_28_000.jpg", "26_38_000.jpg",
"26_48_000.jpg", "26_58_000.jpg", "27_08_000.jpg", "27_18_000.jpg",
"27_28_000.jpg", "27_38_000.jpg", "27_48_000.jpg", "27_58_000.jpg",
"28_08_000.jpg", "28_18_000.jpg", "28_28_000.jpg", "28_38_000.jpg",
"28_48_000.jpg", "28_58_000.jpg", "29_08_000.jpg", "29_18_000.jpg",
"29_28_000.jpg", "29_38_000.jpg", "29_48_000.jpg", "29_58_000.jpg",
"30_08_000.jpg", "30_18_000.jpg", "30_28_000.jpg", "30_38_000.jpg",
"30_48_000.jpg", "30_58_000.jpg", "31_08_000.jpg", "31_18_000.jpg",
"31_28_000.jpg", "31_38_000.jpg", "31_48_000.jpg", "31_58_000.jpg",
"32_08_000.jpg", "32_18_000.jpg", "32_28_000.jpg", "32_38_000.jpg",
"32_48_000.jpg", "32_58_000.jpg", "33_08_000.jpg", "33_18_000.jpg",
"33_28_000.jpg", "33_38_000.jpg", "33_48_000.jpg", "33_58_000.jpg",
"34_08_000.jpg", "34_18_000.jpg", "34_28_000.jpg", "34_38_000.jpg",
"34_48_000.jpg", "34_58_000.jpg", "35_08_000.jpg", "35_18_000.jpg", 
"35_28_000.jpg", "35_38_000.jpg", "35_48_000.jpg", "35_58_000.jpg",
"36_08_000.jpg", "36_18_000.jpg", "36_28_000.jpg", "36_38_000.jpg",
"36_48_000.jpg", "36_58_000.jpg", "37_08_000.jpg", "37_18_000.jpg",
"37_28_000.jpg", "37_38_000.jpg", "37_48_000.jpg", "37_58_000.jpg",
"38_08_000.jpg", "38_18_000.jpg", "38_28_000.jpg", "38_38_000.jpg",
"38_48_000.jpg", "38_58_000.jpg", "39_08_000.jpg", "39_18_000.jpg",
"39_28_000.jpg", "39_38_000.jpg", "39_48_000.jpg", "39_58_000.jpg",
"40_08_000.jpg", "40_18_000.jpg", "40_28_000.jpg", "40_38_000.jpg",
"40_48_000.jpg", "40_58_000.jpg", "41_08_000.jpg", "41_18_000.jpg",
"41_28_000.jpg", "41_38_000.jpg", "41_48_000.jpg", "41_58_000.jpg",
"42_08_000.jpg", "42_18_000.jpg", "42_28_000.jpg", "42_38_000.jpg",
"42_48_000.jpg", "42_58_000.jpg", "43_08_000.jpg", "43_18_000.jpg",
"43_28_000.jpg", "43_38_000.jpg", "43_48_000.jpg", "43_58_000.jpg",
"44_08_000.jpg", "44_18_000.jpg", "44_28_000.jpg", "44_38_000.jpg",
"44_48_000.jpg", "44_58_000.jpg", "45_08_000.jpg", "45_18_000.jpg",
"45_28_000.jpg", "45_38_000.jpg", "45_48_000.jpg", "45_58_000.jpg",
"46_08_000.jpg", "46_18_000.jpg", "46_28_000.jpg", "46_38_000.jpg",
"46_48_000.jpg", "46_58_000.jpg", "47_08_000.jpg", "47_18_000.jpg",
"47_28_000.jpg", "47_38_000.jpg", "47_48_000.jpg", "47_58_000.jpg",
"48_08_000.jpg", "48_18_000.jpg", "48_28_000.jpg", "48_38_000.jpg",
"48_48_000.jpg", "48_58_000.jpg", "49_08_000.jpg", "49_18_000.jpg",
"49_28_000.jpg", "49_38_000.jpg", "49_48_000.jpg", "49_58_000.jpg",
"50_08_000.jpg", "50_18_000.jpg", "50_28_000.jpg", "50_38_000.jpg",
"50_48_000.jpg", "50_58_000.jpg", "51_08_000.jpg", "51_18_000.jpg",
"51_28_000.jpg", "51_38_000.jpg", "51_48_000.jpg", "51_58_000.jpg",
"52_08_000.jpg", "52_18_000.jpg", "52_28_000.jpg", "52_38_000.jpg",
"52_48_000.jpg", "52_58_000.jpg", "53_08_000.jpg", "53_18_000.jpg",
"53_28_000.jpg", "53_38_000.jpg", "53_48_000.jpg", "53_58_000.jpg",
"54_08_000.jpg", "54_18_000.jpg", "54_28_000.jpg", "54_38_000.jpg",
"54_48_000.jpg", "54_58_000.jpg", "55_08_000.jpg", "55_18_000.jpg",
"55_28_000.jpg", "55_38_000.jpg", "55_48_000.jpg", "55_58_000.jpg",
"56_08_000.jpg", "56_18_000.jpg", "56_28_000.jpg", "56_38_000.jpg",
"56_48_000.jpg", "56_58_000.jpg", "57_08_000.jpg", "57_18_000.jpg",
"57_28_000.jpg", "57_38_000.jpg", "57_48_000.jpg", "57_58_000.jpg",
"58_08_000.jpg", "58_18_000.jpg", "58_28_000.jpg", "58_38_000.jpg",
"58_48_000.jpg", "58_58_000.jpg", "59_08_000.jpg", "59_18_000.jpg",
"59_28_000.jpg", "59_38_000.jpg", "59_48_000.jpg", "59_58_000.jpg"]

并列为

list =
["24_00_000.jpg", "24_01_000.jpg", "24_02_000.jpg", "24_03_000.jpg",
"24_04_000.jpg", "24_05_000.jpg", "24_06_000.jpg", "24_07_000.jpg",
"24_08_000.jpg", "24_09_000.jpg", "24_10_000.jpg", "24_11_000.jpg",
"24_12_000.jpg", "24_13_000.jpg", "24_14_000.jpg", "24_15_000.jpg",
"24_16_000.jpg", "24_17_000.jpg", "24_18_000.jpg", "24_19_000.jpg",
"24_20_000.jpg", "24_21_000.jpg", "24_22_000.jpg", "24_23_000.jpg",
"24_24_000.jpg", "24_25_000.jpg", "24_26_000.jpg", "24_27_000.jpg",
"24_28_000.jpg", "24_29_000.jpg", "24_30_000.jpg", "24_31_000.jpg",
"24_32_000.jpg", "24_33_000.jpg", "24_34_000.jpg", "24_35_000.jpg",
"24_36_000.jpg", "24_37_000.jpg", "24_38_000.jpg", "24_39_000.jpg",
"24_40_000.jpg", "24_41_000.jpg", "24_42_000.jpg", "24_43_000.jpg",
"24_44_000.jpg", "24_45_000.jpg", "24_46_000.jpg", "24_47_000.jpg",
"24_48_000.jpg", "24_49_000.jpg", "24_50_000.jpg", "24_51_000.jpg",
"24_52_000.jpg", "24_53_000.jpg", "24_54_000.jpg", "24_55_000.jpg",
"24_56_000.jpg", "24_57_000.jpg", "24_58_000.jpg", "24_59_000.jpg",
"25_00_000.jpg", "25_01_000.jpg", "25_02_000.jpg", "25_03_000.jpg",
"25_04_000.jpg", "25_05_000.jpg", "25_06_000.jpg", "25_07_000.jpg",
"25_08_000.jpg", "25_09_000.jpg", "25_10_000.jpg", "25_11_000.jpg",
"25_12_000.jpg", "25_13_000.jpg", "25_14_000.jpg", "25_15_000.jpg",
"25_16_000.jpg", "25_17_000.jpg", "25_18_000.jpg", "25_19_000.jpg",
"25_20_000.jpg", "25_21_000.jpg", "25_22_000.jpg", "25_23_000.jpg",
"25_24_000.jpg", "25_25_000.jpg", "25_26_000.jpg", "25_27_000.jpg",
"25_28_000.jpg", "25_29_000.jpg", "25_30_000.jpg", "25_31_000.jpg",
"25_32_000.jpg", "25_33_000.jpg", "25_34_000.jpg", "25_35_000.jpg",
"25_36_000.jpg", "25_37_000.jpg", "25_38_000.jpg", "25_39_000.jpg",
"25_40_000.jpg", "25_41_000.jpg", "25_42_000.jpg", "25_43_000.jpg",
"25_44_000.jpg", "25_45_000.jpg", "25_46_000.jpg", "25_47_000.jpg",
"25_48_000.jpg", "25_49_000.jpg", "25_50_000.jpg", "25_51_000.jpg",
"25_52_000.jpg", "25_53_000.jpg", "25_54_000.jpg", "25_55_000.jpg",
"25_56_000.jpg", "25_57_000.jpg", "25_58_000.jpg", "25_59_000.jpg",
"26_00_000.jpg"]

以下解决方案不起作用。

最快的方法是同时减少长列表短列表。

values =
["00_02_000.jpg", "00_06_000.jpg", "00_14_000.jpg", "00_18_000.jpg",
"00_22_000.jpg", "00_30_000.jpg", "00_34_000.jpg", "00_38_000.jpg",
"00_42_000.jpg", "00_46_000.jpg", "00_54_000.jpg", "00_58_000.jpg",
"01_02_000.jpg", "01_10_000.jpg", "01_14_000.jpg", "01_18_000.jpg",
"01_22_000.jpg", "01_30_000.jpg", "01_34_000.jpg", "01_38_000.jpg",
"01_42_000.jpg", "01_50_000.jpg", "01_54_000.jpg", "01_58_000.jpg",
"02_02_000.jpg", "02_06_000.jpg", "02_25_000.jpg", "02_29_000.jpg",
"02_33_000.jpg", "02_41_000.jpg", "02_45_000.jpg", "02_49_000.jpg",
"02_53_000.jpg", "03_01_000.jpg", "03_05_000.jpg", "03_09_000.jpg",
"03_13_000.jpg", "03_21_000.jpg", "03_25_000.jpg", "03_29_000.jpg",
"03_33_000.jpg", "03_41_000.jpg", "03_45_000.jpg", "03_49_000.jpg",
"03_53_000.jpg", "04_01_000.jpg", "04_05_000.jpg", "04_09_000.jpg",
"04_13_000.jpg", "04_21_000.jpg"]
list = Enum.sort(["00_00_000.jpg", "02_01_000.jpg", "04_01_000.jpg"])
values
|> Enum.reduce_while({list, []}, fn
_, {[], acc} -> {:halt, acc}
e, {[h|t], acc} ->
{:cont, 
if(String.split(e, ~w[_ .]) < String.split(h, ~w[_ .]),
do: {[h|t], acc},
else: {t, [e | acc]})
}
end)
|> Enum.reverse()
#⇒ ["00_02_000.jpg", "02_02_000.jpg", "04_01_000.jpg"]

基本上,这里我们遍历长列表,一旦我们满足短列表中大于或等于当前头部的值,我们都会将其注入累加器并从短列表中删除


如果性能不是关键,则将短列表映射到长列表中的第一个的解决方案可能更易于阅读和支持。

Enum.map(list, fn e ->
Enum.find(values,
&(String.split(e, ~w[_ .]) <= String.split(&1, ~w[_ .])))
end)
#⇒ ["00_02_000.jpg", "02_02_000.jpg", "04_01_000.jpg"]

相关内容

  • 没有找到相关文章

最新更新