相关疑难解决方法(0)

识别列表中的连续数字组

我想在列表中标识连续数字组,以便:

myfunc([2, 3, 4, 5, 12, 13, 14, 15, 16, 17, 20])
Run Code Online (Sandbox Code Playgroud)

返回:

[(2,5), (12,17), 20]
Run Code Online (Sandbox Code Playgroud)

并且想知道最好的方法是什么(特别是如果在Python中有内置的东西).

编辑:注意我原本忘了提到个别数字应该作为单独的数字返回,而不是范围.

python list range continuous

81
推荐指数
6
解决办法
4万
查看次数

当它在地图中时,打印不会打印,Python

primes = [2,3,5,7..] (prime numbers)
map(lambda x:print(x),primes)
Run Code Online (Sandbox Code Playgroud)

它不打印任何东西.这是为什么?我试过了

sys.stdout.write(x)
Run Code Online (Sandbox Code Playgroud)

也是,但也不起作用.

dictionary python-3.x

51
推荐指数
2
解决办法
4万
查看次数

如何检查列表中是否存在子序列?

在python中,可以使用is关键字来检查包含,例如

>>> 3 in [1,2,3,4,5]
True
Run Code Online (Sandbox Code Playgroud)

但是,如果它检查单个整数列表是否在引用列表中,则不会产生相同的输出[1,2,3,4,5]

>>> [3] in [1,2,3,4,5]
False
Run Code Online (Sandbox Code Playgroud)

此外,无法通过以下方式检查参考列表中的子序列:

>>> [3,4,5] in [1,2,3,4,5]
False
Run Code Online (Sandbox Code Playgroud)

有没有办法让函数检查子序列,以便以下返回true?例如函数调用x_in_y()

>>> x_in_y([3,4,5], [1,2,3,4,5])
True
>>> x_in_y([3], [1,2,3,4,5])
True
>>> x_in_y(3, [1,2,3,4,5])
True
>>> x_in_y([2,3], [1,2,3,4,5])
True
>>> x_in_y([2,4], [1,2,3,4,5])
False
>>> x_in_y([1,5], [1,2,3,4,5])
False
Run Code Online (Sandbox Code Playgroud)

也许来自itertools或的东西operator

(注意,输入列表可以是非唯一的)

python list python-itertools

6
推荐指数
1
解决办法
5278
查看次数

将日期列表拆分为连续日期的子集

我有一个日期数组,其中可以包含多个日期范围。

dates = [
 '2020-01-01',
 '2020-01-02',
 '2020-01-03',
 '2020-01-06',
 '2020-01-07',
 '2020-01-08'
]
Run Code Online (Sandbox Code Playgroud)

在此示例中,列表包含 2 个单独的连续日期范围(2020-01-01 到 2020-01-03 & 2020-01-06 到 2020-01-08)

我试图弄清楚如何遍历此列表并找到所有连续的日期范围。

我正在看的一篇文章(如何检测 Python 中的日期是否连续?)似乎有一个很好的方法,但是,我正在努力在我的用例中实现这个逻辑。

python datetime date python-3.x python-datetime

6
推荐指数
1
解决办法
874
查看次数

将连续数字组合成范围元组

我有一个清单

[38, 98, 110, 111, 112, 120, 121, 898]
Run Code Online (Sandbox Code Playgroud)

如何将连续数字合并为表示范围的对?

期望的输出:

['38',
 '98', 
 '110,112',
 '120,121',
 '898']
Run Code Online (Sandbox Code Playgroud)

python algorithm list

3
推荐指数
1
解决办法
1606
查看次数

检测连续整数并折叠为字符串

免责声明:这里已经在 Python 上下文中提出了一个非常相似的问题。这是关于 C#。

我有一个包含整数的枚举,例如:

[1, 2, 3, 4, 7, 8, 10, 11, 12, 13, 14]
Run Code Online (Sandbox Code Playgroud)

我想获得一个字符串,列出连续整数的范围:

1-4, 7-8, 10-14
Run Code Online (Sandbox Code Playgroud)

我想出了:

public static void Main()
{
    System.Diagnostics.Debug.WriteLine(FindConsecutiveNumbers(new int[] { 1,2, 7,8,9, 12, 15, 20,21 }));
}

private static string FindConsecutiveNumbers(IEnumerable<int> numbers)
{
    var sb = new StringBuilder();
    int? start = null;
    int? lastNumber = null;
    const string s = ", ";
    const string c = "-";

    var numbersPlusIntMax = numbers.ToList();
    numbersPlusIntMax.Add(int.MaxValue);
    foreach (var number in numbersPlusIntMax)
    {
        var …
Run Code Online (Sandbox Code Playgroud)

c# algorithm list

3
推荐指数
1
解决办法
104
查看次数