我必须在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)
也许递归会有所帮助?谢谢!
我正在寻找一种算法,可以在该方法中获取调用该方法的对象.
例如:
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)
有没有办法做到这一点?
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 …
最近,我在接受采访时被问到以下问题.
给定字符串S,我需要找到另一个字符串S2,使得S2是S的子序列,并且S是S2 +反向的子序列(S2).这里'+'表示连接.我需要为给定的S输出最小可能的S2长度.
我被告知这是一个动态编程问题,但我无法解决它.有人可以帮我解决这个问题吗?
编辑-
有没有办法在O(N 2)或更少的情况下执行此操作.
例如,我看到像流动的源代码.我们可以#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) 我有一个字典列表,如下所示:
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) 我的需求文件中有这一行
django>=1.10,<1.11
Run Code Online (Sandbox Code Playgroud)
这是否意味着我需要拥有Django版本>= 1.10然后不到1.11?
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中它是如此制作的?这不危险吗?
给定列表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)是否有更有效的方法?
我的第一个想法是写一个interator,或者做一些列表理解.但是,就像我在python中编写的每个5-10行方法一样,有人通常可以指示我在标准库中调用来完成相同的操作.
我如何从两个元组x和y一个字典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)