小编chy*_*ENG的帖子

python中的lambda可以迭代dict吗?

我最近接受采访.面试官问我如何迭代词典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用作提供比较密钥的函数.你觉得这个问题怎么样?

python lambda dictionary

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

如何使用python的任何

我对这样的代码感到非常困惑[不是我写的]:

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()只需返回TrueFalse.如果我用另一种方式重写这个逻辑,我找不到一个优雅的方式作为pythoner.

我想知道是否any()可以实现逻辑,如果没有,如何优雅地实现它?

python any

6
推荐指数
2
解决办法
204
查看次数

使用python的for语句时如何跳转一些步骤

昨天有一个面试,当我写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语句很难实现。

我该怎么做?

python for-loop

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

HttpRequest 实例在 Django 中动态添加属性?

我对Django 中的HttpRequest对象感到困惑。我知道AuthenticationMiddleware将添加userrequest它的HttpRequest的一个实例。代码在这里,但我想展示的内容如下:

request.user = SimpleLazyObject(lambda: get_user(request))

我已经阅读了 HttpRequest 对象的代码,但找不到user属性,并且它的代码没有__setattr__方法。所以我很好奇为什么代码在访问不存在的属性时不会引发 AtrributeError 。

感谢您提供帮助。

python django

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

检查字符串是否有数字

如何检查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

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

i ++或j--在while语句中使用java进行快速排序

我首先使用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)

然后我测试了函数,但发现使用快速排序函数时输入数组不会改变.我怀疑在代码中flag1flag2,然后我改变他们:

public static int partition(int[] array, int left, int right) {

    int …
Run Code Online (Sandbox Code Playgroud)

java quicksort

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

标签 统计

python ×4

java ×2

any ×1

dictionary ×1

django ×1

for-loop ×1

lambda ×1

quicksort ×1