我最近接受采访.面试官问我如何迭代词典python.我说所有的方式用于声明.但是他告诉我lambda怎么样?
我非常感到困惑,我认为lambda是一个匿名函数,但它如何迭代一个字典?一些代码如下:
new_dict = sorted(old_dict.items(), lambda x: x[1]) # sorted by value in dict
Run Code Online (Sandbox Code Playgroud)
但在此代码中,lambda用作提供比较密钥的函数.你觉得这个问题怎么样?
我对这样的代码感到非常困惑[不是我写的]:
version = any(func1(), func2()) # wrong, should be any([func1(), func2()])
def func1():
if something:
return 1
else:
return None
def func2():
if something:
return 2
else:
return 3
Run Code Online (Sandbox Code Playgroud)
version必须是一个数字.当[func1(), func2()]是[1, None],应该返回1,当是[None, 2],应该返回图2,当[1, 2],应该返回1.
所以我认为any()在这段代码中使用是错误的,因为any()只需返回True或False.如果我用另一种方式重写这个逻辑,我找不到一个优雅的方式作为pythoner.
我想知道是否any()可以实现逻辑,如果没有,如何优雅地实现它?
昨天有一个面试,当我写python代码来实现一些算法时,我有一个问题。使用 C 可以像这样实现一些逻辑:
void get_some_num(int a[], int length) {
int i;
for(i = 0; i < length - 1; ++i) {
if(something) i++; // jump a num in the array
a[i] = 1;
}
return some_num;
}
Run Code Online (Sandbox Code Playgroud)
C语言i += n在for循环中使用语句迭代数组时可以跳过一些元素(如n),但我发现优雅地使用python的for语句很难实现。
我该怎么做?
我对Django 中的HttpRequest对象感到困惑。我知道AuthenticationMiddleware将添加user到request它的HttpRequest的一个实例。代码在这里,但我想展示的内容如下:
request.user = SimpleLazyObject(lambda: get_user(request))
我已经阅读了 HttpRequest 对象的代码,但找不到user属性,并且它的代码没有__setattr__方法。所以我很好奇为什么代码在访问不存在的属性时不会引发 AtrributeError 。
感谢您提供帮助。
如何检查passCode是否包含数字?我必须使用方法isDigit()
我知道如何只用charAt()检查一个字符,而不是整个单词.
public class CheckingPasscodes {
public static void main (String [] args) {
boolean hasDigit = false;
String passCode = "";
int valid = 0;
passCode = "abc";
// if (?)
hasDigit = true;
if (hasDigit) {
System.out.println("Has a digit.");
} else {
System.out.println("Has no digit.");
}
return;
}
}
Run Code Online (Sandbox Code Playgroud) 我首先使用java编写了快速排序的分区函数:
public static int partition(int[] array, int left, int right) {
int pivot = array[left];
int i = left;
int j = right;
while(i < j) {
while(i < j && array[j--] >= pivot); // flag1
if(i < j) array[i++] = array[j];
while(i < j && array[i++] <= pivot); // flag2
if(i < j) array[j--] = array[i];
}
array[i] = pivot;
return i;
}
Run Code Online (Sandbox Code Playgroud)
然后我测试了函数,但发现使用快速排序函数时输入数组不会改变.我怀疑在代码中flag1和flag2,然后我改变他们:
public static int partition(int[] array, int left, int right) {
int …Run Code Online (Sandbox Code Playgroud)