相关疑难解决方法(0)

从与条件匹配的iterable中获取第一个项目

我想从符合条件的列表中获取第一项.重要的是,生成的方法不会处理整个列表,这可能非常大.例如,以下功能就足够了:

def first(the_iterable, condition = lambda x: True):
    for i in the_iterable:
        if condition(i):
            return i
Run Code Online (Sandbox Code Playgroud)

这个函数可以用这样的东西:

>>> first(range(10))
0
>>> first(range(10), lambda i: i > 3)
4
Run Code Online (Sandbox Code Playgroud)

但是,我想不出一个好的内置/单线来让我这样做.如果我不需要,我不特别想复制这个功能.是否有内置方法可以使第一个项目符合条件?

python iterator

264
推荐指数
11
解决办法
15万
查看次数

pythonic是什么意思?

在许多网站上,我经常看到代码不是pythonic的评论,或者有更多的pythonic方法来实现相同的目标.

pythonic在这种情况下意味着什么?例如,为什么

while i < someValue:
   do_something(list[i])
   i += 1
Run Code Online (Sandbox Code Playgroud)

不是pythonic而是

for x in list:
   doSomething(x)
Run Code Online (Sandbox Code Playgroud)

是pythonic?

python

71
推荐指数
1
解决办法
4万
查看次数

Python中的块字符串,不会破坏单词

我有这个代码,用于在20x2 LCD显示屏上显示一些文字:

#!/usr/bin/python

LCDCHARS = 20
LCDLINES = 2

def WriteLCD(text_per_LCD):
    chunked = (text_per_LCD[i:LCDCHARS+i] for i in range (0, len(text_per_LCD), LCDCHARS))
    count_l = 0
    for text_per_line in chunked:
        # print will be replaced by actual LCD call
        print (text_per_line)
        count_l += 1
        if count_l >= LCDLINES:
            # agree to lose any extra lines
            break

WriteLCD("This text will display on %s LCD lines" % (LCDLINES))
Run Code Online (Sandbox Code Playgroud)

将输出示例字符串

This text will displ
ay on 2 LCD lines
Run Code Online (Sandbox Code Playgroud)

我该怎么做才能分割字符串而不会破坏字词?即使第二行变得更长并且不显示.

我在javascript部分读了一个类似的问题,在ruby部分读了另一个,但是我无法将给定的答案翻译成我的Python案例.

python raspberry-pi

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

列表中第一次出现的索引(不等式匹配)

A=[2,3,5,7,11,13]
print(A.index(5))
Run Code Online (Sandbox Code Playgroud)

答案是2,但我需要的是第一个大于4的答案(答案是相同的 - 2).我可以应用while循环,但是有更优雅或内置的方法吗?在我的问题中,列表按升序排序(无重复),我的目标是将其拆分为两个列表:低于或等于4,大于4; 并且如果列表被排序,则扫描它两次(甚至一次)将是多余的.

python list

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

标签 统计

python ×4

iterator ×1

list ×1

raspberry-pi ×1