我想从符合条件的列表中获取第一项.重要的是,生成的方法不会处理整个列表,这可能非常大.例如,以下功能就足够了:
def first(the_iterable, condition = lambda x: True):
    for i in the_iterable:
        if condition(i):
            return i
这个函数可以用这样的东西:
>>> first(range(10))
0
>>> first(range(10), lambda i: i > 3)
4
但是,我想不出一个好的内置/单线来让我这样做.如果我不需要,我不特别想复制这个功能.是否有内置方法可以使第一个项目符合条件?
在许多网站上,我经常看到代码不是pythonic的评论,或者有更多的pythonic方法来实现相同的目标.
pythonic在这种情况下意味着什么?例如,为什么
while i < someValue:
   do_something(list[i])
   i += 1
不是pythonic而是
for x in list:
   doSomething(x)
是pythonic?
我有这个代码,用于在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))
将输出示例字符串
This text will displ
ay on 2 LCD lines
我该怎么做才能分割字符串而不会破坏字词?即使第二行变得更长并且不显示.
我在javascript部分读了一个类似的问题,在ruby部分读了另一个,但是我无法将给定的答案翻译成我的Python案例.
A=[2,3,5,7,11,13]
print(A.index(5))
答案是2,但我需要的是第一个大于4的答案(答案是相同的 - 2).我可以应用while循环,但是有更优雅或内置的方法吗?在我的问题中,列表按升序排序(无重复),我的目标是将其拆分为两个列表:低于或等于4,大于4; 并且如果列表被排序,则扫描它两次(甚至一次)将是多余的.