小编jle*_*and的帖子

如何使用 Kotlin 谓词将列表拆分为子列表?

我正在尝试一种惯用且理想的功能方式来将 Kotlin 中的列表拆分为子列表。

想象一下输入["aaa", "bbb", "", "ccc", "", "ddd", "eee", "fff"],我想返回[["aaa", "bbb"], ["ccc"], ["ddd", "eee", "fff"]]给定的谓词string.isEmpty()

使用 for 循环和累加器就可以非常简单地实现;但我还没有找到一种我认为足够可读的功能性编写方法。

到目前为止我最好的结果是:

lines.foldIndexed(Pair(listOf<List<String>>(), listOf<String>()), { idx, acc, line ->
    when {
    idx + 1 == lines.size -> {
        Pair(acc.first + listOf(acc.second + line), listOf())
    }
    line.isEmpty() -> {
        Pair(acc.first + listOf(acc.second), listOf())
    }
    else -> {
        Pair(acc.first, acc.second + line)
        }
    }
}).first
Run Code Online (Sandbox Code Playgroud)

本质上,我使用的是fold带有双累加器的双累加器,它跟踪当前列表并在找到谓词时重置。该列表将输入到此时的完整结果中。我正在使用FoldIndexed来获取我的最后一个列表。

大家知道有什么更好的办法吗?

作为参考,循环版本可以是

val data = mutableListOf<String>()
var currentData …
Run Code Online (Sandbox Code Playgroud)

functional-programming kotlin

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

删除列表中的重复项时出现奇怪的行为

我有一个整数列表.

我想做的是对它们进行排序并删除所有重复项.我在网上看到了两种不同的解决方案.两者似乎都给出了与我期望的结果不同的结果.

a = integer_combinations(5, 5)
print a
>>[4, 8, 16, 32, 9, 27, 81, 243, 16, 64, 256, 1024, 25, 125, 625, 3125]

b = sorted(a)
print b
>>[4, 8, 9, 16, 16, 25, 27, 32, 64, 81, 125, 243, 256, 625, 1024, 3125]

c = dict().fromkeys(sorted(a)).keys()
print c
>> [32, 64, 4, 1024, 625, 8, 9, 256, 16, 81, 243, 3125, 25, 27, 125]
Run Code Online (Sandbox Code Playgroud)

另一种方法,使用集合:

d = list(set(b))
print d
>> [32, 64, 4, 1024, 625, 8, 9, …
Run Code Online (Sandbox Code Playgroud)

python list duplicates

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

Connection拒绝了PythonAnywhere上的Twitter API

我试图在任何地方连接到Python上的Twitter流API,但总是得到连接拒绝错误.

我在我的应用程序中使用Tweepy,并测试连接我正在使用可以在repo中找到的流示例.

HEre是代码的总结:

from tweepy.streaming import StreamListener
from tweepy import OAuthHandler
from tweepy import Stream

# Go to http://dev.twitter.com and create an app. 
# The consumer key and secret will be generated for you after
consumer_key=""
consumer_secret=""

# After the step above, you will be redirected to your app's page.
# Create an access token under the the "Your access token" section
access_token=""
access_token_secret=""

class StdOutListener(StreamListener):
    """ A listener handles tweets are the received from the stream. 
    This …
Run Code Online (Sandbox Code Playgroud)

python twitter streaming twitter-oauth pythonanywhere

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

函数名称作为另一个函数的输入?

我是一个图像处理工程师,我使用Python作为原型语言.

大多数时候,当我得到数以千计的图像时,名为"imagen.jpg",n是增量.

所以我的程序的主要结构可能被视为:

def main_IP(imgRoot, stop_ncrement):
  name = update_the_increment(imgRoot, stop_increment)
  img = load_the_image(name)
  out_img = process_image(img)
  displays_images(img, out_img)
  return out_img
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,从一个应用程序到另一个应用程序,唯一的变化是process_image函数.有没有办法让process_image作为输入插入?

我会得到一个泛型函数,原型为:main_IP(imgRoot,stop_increment,process_image)

谢谢 !朱利安

python

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

for循环中的Windows批处理逗号分隔列表

我知道有很多关于SO的相关问题,比如这一个或者这个问题,但由于某种原因我到目前为止无法获得任何工作.

我正在尝试创建一个批处理文件来连续安装几个软件:

这是我的批处理文件

set packages=(7zip.install, ^ :: for compression
notepadplusplus.install, ^ :: file editor
Firefox, ^
putty, ^
mysql -Version 5.5.30, ^
postgresql)

for %%i in %packages% do ( 
::echo %%i
cinst %%i
)
Run Code Online (Sandbox Code Playgroud)

一切正常,但对于mysql部分.这个空间实际上是一个分隔符,这意味着我得到了

E:\>(echo 7zip.install )
7zip.install

E:\>(echo notepadplusplus.install )
notepadplusplus.install

E:\>(echo Firefox )
Firefox

E:\>(echo putty )
putty

E:\>(echo mysql )
mysql

E:\>(echo -Version )
-Version

E:\>(echo 5.5.30 )
5.5.30

E:\>(echo postgresql )
postgresql
Run Code Online (Sandbox Code Playgroud)

我想最终得到的是

E:\>(echo mysql -Version 5.5.30 )
 mysql -Version 5.5.30 …
Run Code Online (Sandbox Code Playgroud)

for-loop batch-file delimiter

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

在点亮元素中使用 Vaadin 徽章

我正在尝试在点亮元素中使用vaadin 徽章。

\n

该文档提到“要在应用程序中使用这些类,请在 theme\xe2\x80\x99s theme.json 中启用它们”,但我没有这样的文件,所以这对我来说真的很困惑。大多数文档都集中在 Java 上,所以我猜这就是混乱的根源。到目前为止我只通过 NPM 安装了一些组件。

\n

无论如何,我尝试创建一个frontend/themes/common-theme/theme.json文件,但到目前为止还没有成功。

\n

这是我的元素目前的样子:

\n
import {LitElement, html} from \'lit\';\n\nimport \'@vaadin/vertical-layout\';\nimport \'@vaadin/horizontal-layout\';\n\nimport \'@vaadin/vaadin-lumo-styles/badge.js\';\n\nexport class PaymentLink extends LitElement {\n    static properties = {\n        version: {},\n        link : { Object}\n    };\n\n    constructor() {\n        super();\n    }\n\n    render() {\n        return html`\n            <vaadin-horizontal-layout>\n                <a href="${this.link.url}">${this.link.id}</a>\n                <span theme="badge">Pending</span>\n            </vaadin-horizontal-layout>\n    `;\n    }\n\n}\ncustomElements.define(\'payment-link\', PaymentLink);\n
Run Code Online (Sandbox Code Playgroud)\n

有人可以给我看看光吗?这是一个 stackblitz 示例:https://stackblitz.com/edit/lit-element-jjzdpa ?file=src/index.js

\n

vaadin web-component lit

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

Python线程和Lock:死锁

我试图使用锁来写入和读取线程中的数据,但有一个我无法解决的死锁:s.

这就是事情.由于一个在我的问题中没用的原因,我必须启动一个自己启动其他线程的线程.所以我有:main - > send_gps_data - > stream_session

我在stream_session中写入gpsData,在无限循环中(每秒输出一个新报告).我想在我的主要内容中阅读这些数据.为了避免数据损坏,我想使用阻塞锁.

这是代码:

def main():
    lock = threading.Lock()
    thread_gps = threading.Thread(None, send_gps_data, args=(gpsData, lock))  
    gps_thread_gps.start()

    # to allow interrupt
    while(gm.runn):
        try:
            time.sleep(0.5)
            print "!"
            lock.acquire():
            gm.display_gpsdata(gpsData)
            lock.release()
            print "!!"
        except KeyboardInterrupt:
            gm.runn = 0

def send_gps_data(gpsData, lock):
    global runn
    gps_thread = threading.Thread(None, stream_session, args=(gpsData, lock))    
    gps_thread.start()
    while(runn):
            time.sleep(1)
    gps_thread._Thread__stop()  
    sys.exit(0)

def stream_session(gpsData, session, lock):
    for report in session:
        if report.get("class") == "TPV":
            print ":"
            lock.acquire()
            fill_gpsdata(gpsData, session, report)
            lock.release
            print "::"
Run Code Online (Sandbox Code Playgroud)

我的问题是我最终陷入僵局.这是我得到的代码输出:!!!!:::!:

它阻止了它...所以似乎我的锁定版本从未被考虑过... …

python multithreading deadlock

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

创建一个枚举的超类

我目前使用枚举定义如下:

public enum Language{
    English("english", "eng", "en", "en_GB", "en_US"),
    German("german", "de", "ge"),
    Croatian("croatian", "hr", "cro"),
    Russian("russian");

    private final List<String> values;

    Language(String ...values) {
        this.values = Arrays.asList(values);
    }

    public List<String> getValues() {
        return values;
    }
    public static Language find(String name) {
        for (Language lang : Language.values()) {
            if (lang.getValues().contains(name)) {
                return lang;
            }
        }
        return null;
    }
}
Run Code Online (Sandbox Code Playgroud)

事实是,我将不得不使用相同的方法和构造函数使用几个枚举.在我的例子中唯一改变的是枚举本身的值.

有没有办法让我创建一个我可以重用的枚举的超类?

所以我可以这样做:

public Language extends(specializedEnum){
        English("english", "eng", "en", "en_GB", "en_US"),
        German("german", "de", "ge"),
        Croatian("croatian", "hr", "cro"),
        Russian("russian");
}
Run Code Online (Sandbox Code Playgroud)

提前谢谢你!

java inheritance enums

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

settimeout在ajax调用中无法正常工作

我正在开发一个小型Web应用程序.我已经完成了服务器端代码,但我正在努力与客户端javascript.

我有一个每秒更新的html文件.此文件是完全静态的,我仅将其用于日志目的.

这个想法几乎完全相同,但在客户端进行了自动更新.

为此我想使用ajax进行数据库轮询.

我在这里实现了第一个版本,它只是打印相同的html文件,并且应该每秒重新加载它.

事情就是不更新,即使我在我的javascript控制台客户端没有看到任何错误.找到该文件,因为它正确加载,我没有看到为什么它不会更新我的div的任何原因.

这是我的代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <!-- Using Google CDN -->
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
    <script>
        (function worker() {
          $.ajax({
            url : 'http://jlengrand.pythonanywhere.com/static/leader.html',
            success: function(data) {
              $('.text').html(data);
            },
            complete: function() {
              setTimeout(worker, 1000);
            }
          });
        })();
    </script>
</head>
<body>
    <div class="text">
        To be loaded <br />
    </div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

我尝试了本地(但文件较小)并且工作正常.

我知道重新加载整个文件并不聪明,但我想逐步构建,因为这是我第一次使用JavaScript开发.

我错过了什么?

ajax jquery timeout

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