小编Wil*_*sem的帖子

在Python中查找列表中最长的列表

我必须在Python中找到最长的列表列表.

例如:

longest([1,2,3]) 返回3

longest([[[1,2,3]]]) 也返回3(内部列表为3)

longest([[], [3,[4,5],[2,3,4,5,3,3], [7], 5, [1,2,3], [3,4]], [1,2,3,4,5]])返回7(列表[3,[4,5],[2,3,4,5,3,3], [7], 5, [1,2,3], [3,4]]包含7个元素)

现在我有这个代码,但它没有做前两个例子的技巧..

def longest(list1):
    longest_list = max(len(elem) for elem in list1)
    return longest_list
Run Code Online (Sandbox Code Playgroud)

也许递归会有所帮助?谢谢!

python list

17
推荐指数
3
解决办法
2万
查看次数

获取在C#中调用方法的实例

我正在寻找一种算法,可以在该方法中获取调用该方法的对象.

例如:

public class Class1 {

    public void Method () {
        //the question
        object a = ...;//the object that called the method (in this case object1)
        //other instructions
    }

}

public class Class2 {

    public Class2 () {
        Class1 myClass1 = new Class1();
        myClass1.Method();
    }

    public static void Main () {
        Class2 object1 = new Class2();
        //...
    }

}
Run Code Online (Sandbox Code Playgroud)

有没有办法做到这一点?

c# methods class instance

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

Java 8中的模糊方法,为什么?

public static void main(String... args){
    then(bar()); // Compilation Error
}

public static <E extends Exception> E bar() {
    return null;
}

public static void then(Throwable actual) { }

public static void then(CharSequence actual) { }
Run Code Online (Sandbox Code Playgroud)

编译结果(来自命令行javac Ambiguous.java)

Ambiguous.java:4: error: reference to then is ambiguous
        then(bar());
        ^
  both method then(Throwable) in Ambiguous and method then(CharSequence) in Ambiguous match
1 error
Run Code Online (Sandbox Code Playgroud)

为什么这种方法含糊不清?这段代码在Java 7下成功编译!

将方法栏更改为:

public static <E extends Float> E bar() {
    return null;
}
Run Code Online (Sandbox Code Playgroud)

这编译没有任何问题,但在IntelliJ Idea(无法解析方法then(java.lang.FLoat))中报告为错误.

此代码在Java …

java generics ambiguous java-7 java-8

16
推荐指数
1
解决办法
5143
查看次数

搜索符合某些条件的最小字符串

最近,我在接受采访时被问到以下问题.

给定字符串S,我需要找到另一个字符串S2,使得S2是S的子序列,并且S是S2 +反向的子序列(S2).这里'+'表示连接.我需要为给定的S输出最小可能的S2长度.

我被告知这是一个动态编程问题,但我无法解决它.有人可以帮我解决这个问题吗?

编辑-

有没有办法在O(N 2)或更少的情况下执行此操作.

string dynamic-programming subsequence

16
推荐指数
1
解决办法
265
查看次数

是否可以在函数内使用#define?

例如,我看到像流动的源代码.我们可以#define在一个函数中使用吗?它是如何工作的?(更多信息:这些代码是我从openvswitch源代码中复制的代码):

void *
ofputil_put_action(enum ofputil_action_code code, struct ofpbuf *buf)
{
switch (code) {
case OFPUTIL_ACTION_INVALID:

#define OFPAT13_ACTION(ENUM, STRUCT, EXTENSIBLE, NAME) case OFPUTIL_##ENUM:
#include "ofp-util.def"
    OVS_NOT_REACHED();

#define OFPAT10_ACTION(ENUM, STRUCT, NAME)                  \
case OFPUTIL_##ENUM: return ofputil_put_##ENUM(buf);
#define OFPAT11_ACTION(ENUM, STRUCT, EXTENSIBLE, NAME)      \
case OFPUTIL_##ENUM: return ofputil_put_##ENUM(buf);
#define NXAST_ACTION(ENUM, STRUCT, EXTENSIBLE, NAME)        \
case OFPUTIL_##ENUM: return ofputil_put_##ENUM(buf);
#include "ofp-util.def"
}
OVS_NOT_REACHED();
}

#define OFPAT10_ACTION(ENUM, STRUCT, NAME)                        \
void                                                        \
ofputil_init_##ENUM(struct STRUCT *s)                       \
{                                                           \
    memset(s, 0, sizeof *s); …
Run Code Online (Sandbox Code Playgroud)

c c++

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

生成器表达式Python

我有一个字典列表,如下所示:

lst = [{'a': 5}, {'b': 6}, {'c': 7}, {'d': 8}]
Run Code Online (Sandbox Code Playgroud)

我写了一个生成器表达式,如:

next((itm for itm in lst if itm['a']==5))
Run Code Online (Sandbox Code Playgroud)

现在奇怪的是,虽然这适用于它的键值对,'a' 但下次会为所有其他表达式抛出错误.表达:

next((itm for itm in lst if itm['b']==6))
Run Code Online (Sandbox Code Playgroud)

错误:

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 1, in <genexpr>
KeyError: 'b'
Run Code Online (Sandbox Code Playgroud)

python dictionary generator generator-expression

16
推荐指数
3
解决办法
2677
查看次数

Requirements.txt大于等于然后小于?

我的需求文件中有这一行

django>=1.10,<1.11
Run Code Online (Sandbox Code Playgroud)

这是否意味着我需要拥有Django版本>= 1.10然后不到1.11

python django requirements.txt

16
推荐指数
1
解决办法
3498
查看次数

为什么Python没有真正的常量?这不危险吗?

Python 3

我通过一本书学习Python.现在我了解到Python在这个意义上没有常量,它们在C++或C#中可用...例如,可以编写这样的危险代码:

>>> import math
>>> math.pi
3.141592653589793
>>> math.pi = 123.456
>>> math.pi
123.456
>>> 
Run Code Online (Sandbox Code Playgroud)

嗯......对我来说这是一个令人不快的惊喜......

即我可能没有受到保护,因为我加载到我的代码中的任何模块(不是我的)都可能损坏不会改变的数据.

为什么在Python中它是如此制作的?这不危险吗?

python

15
推荐指数
1
解决办法
599
查看次数

创建保留重复值的列表的补充

给定列表a = [1, 2, 2, 3]及其子列表b = [1, 2]找到一个以这样的方式补充b的列表sorted(a) == sorted(b + complement).在上面的例子中,complement将是一个列表[2, 3].

使用列表理解是很诱人的:

complement = [x for x in a if x not in b]
Run Code Online (Sandbox Code Playgroud)

或套装:

complement = list(set(a) - set(b))
Run Code Online (Sandbox Code Playgroud)

但是,这两种方式都会回归complement = [3].

一个显而易见的方法是:

complement = a[:]
for element in b:
    complement.remove(element)
Run Code Online (Sandbox Code Playgroud)

但这感觉非常不满意,而且不是非常Pythonic.我错过了一个明显的习语还是这样?

正如下面指出的那样,性能O(n^2)是否有更有效的方法?

python list

15
推荐指数
2
解决办法
1454
查看次数

如何制作两个元组来制作字典?

我的第一个想法是写一个interator,或者做一些列表理解.但是,就像我在python中编写的每个5-10行方法一样,有人通常可以指示我在标准库中调用来完成相同的操作.

我如何从两个元组xy一个字典z

x = ( 1, 2, 3 )
y = ( 'a', 'b', 'c')

z = { }
for index, value in enumerate(y):
    z[value] = x[index]

print z

# { 'a':1, 'b':2, 'c':3 }
Run Code Online (Sandbox Code Playgroud)

python dictionary tuples

14
推荐指数
2
解决办法
5265
查看次数