小编geo*_*org的帖子

删除字符串中的字符列表

我想在python中删除字符串中的字符:

string.replace(',', '').replace("!", '').replace(":", '').replace(";", '')...
Run Code Online (Sandbox Code Playgroud)

但是我必须删除许多字符.我想到了一个清单

list = [',', '!', '.', ';'...]
Run Code Online (Sandbox Code Playgroud)

但是我如何使用list替换中的字符string

python string replace list

210
推荐指数
10
解决办法
40万
查看次数

使用argparse需要两个参数中的任何一个

鉴于:

import argparse

pa = argparse.ArgumentParser()
pa.add_argument('--foo')
pa.add_argument('--bar')

print pa.parse_args('--foo 1'.split())
Run Code Online (Sandbox Code Playgroud)

我如何能

  • 使"富,酒吧"强制至少一个:--foo x,--bar y并且--foo x --bar y是精
  • 最多制作一个"foo,bar"强制性:--foo x或者--bar y很好,--foo x --bar y不是

python argparse

166
推荐指数
2
解决办法
4万
查看次数

从异常对象中提取回溯信息

给定一个Exception对象(来源不明)有没有办法获得它的追溯?我有这样的代码:

def stuff():
   try:
       .....
       return useful
   except Exception as e:
       return e

result = stuff()
if isinstance(result, Exception):
    result.traceback <-- How?
Run Code Online (Sandbox Code Playgroud)

有了它,如何从Exception对象中提取回溯?

python debugging exception-handling

95
推荐指数
6
解决办法
5万
查看次数

生成列表的所有排列而不相邻的相等元素

当我们对列表进行排序时,比如

a = [1,2,3,3,2,2,1]
sorted(a) => [1, 1, 2, 2, 2, 3, 3]
Run Code Online (Sandbox Code Playgroud)

等值元素在结果列表中始终相邻.

我怎样才能完成相反的任务 - 对列表进行洗牌,使相邻的元素永远(或尽可能不相邻)相邻?

例如,对于上面的列表,可能的解决方案之一是

p = [1,3,2,3,2,1,2]
Run Code Online (Sandbox Code Playgroud)

更正式地说,给定一个列表a,生成一个p最小化对的数量的排列p[i]==p[i+1].

由于列表很大,因此不能生成和过滤所有排列.

奖金问题:如何有效地生成所有这些排列?

这是我用来测试解决方案的代码:https://gist.github.com/gebrkn/9f550094b3d24a35aebd

UPD:在这里选择获胜者是一个艰难的选择,因为许多人发布了很好的答案.@VincentvanderWeele,@大卫Eisenstat,@Coady,@ enrico.bacis@srgerg提供函数完美产生的最佳可能的排列.@tobias_k和大卫也回答了红利问题(生成所有排列).大卫的其他要点是正确性证明.

来自@VincentvanderWeele的代码似乎是最快的.

python algorithm combinatorics

86
推荐指数
7
解决办法
9784
查看次数

混淆ID

我正在寻找一种方法来将整数ID加密/混淆为另一个整数.更准确地说,我需要一个功能int F(int x),所以

  • x < - > F(x)是一一对应的(如果x!= y,F(x)!= F(y))
  • 给定F(x),很容易找出x - 所以F不是哈希函数
  • 给定x和F(x)很难/不可能找到F(y),类似的东西x ^ 0x1234不起作用

为清楚起见,我不是在寻找强大的加密解决方案,它只是混淆.想象一下,像URL的Web应用程序example.com/profile/1,example.com/profile/2等型材本身并不是秘密,但我想,以防止随意偷窥查看/读取所有配置了一个又一个,所以我宁愿躲在他们身后像example.com/profile/23423,example.com/profile/80980234等等.虽然数据库存储的令牌可以很容易地完成工作,我很好奇是否有一些简单的数学可用于此.

我不清楚的一个重要要求是结果看起来应该是"随机的",也就是说,给定一个序列x,x+1,...,x+n,F(x),F(x+1)...F(x+n)不应该形成任何类型的进展.

encryption algorithm

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

使用file_get_contents的HTTP请求,获取响应代码

我正在尝试file_get_contentsstream_context_createPOST 一起使用.我的代码到目前为止:

    $options = array('http' => array(
        'method'  => 'POST',
        'content' => $data,
        'header'  => 
            "Content-Type: text/plain\r\n" .
            "Content-Length: " . strlen($data) . "\r\n"
    ));
    $context  = stream_context_create($options);
    $response = file_get_contents($url, false, $context);
Run Code Online (Sandbox Code Playgroud)

它工作正常,但是,当发生HTTP错误时,它会发出警告:

file_get_contents(...): failed to open stream: HTTP request failed! HTTP/1.0 400 Bad Request
Run Code Online (Sandbox Code Playgroud)

并返回false.有办法:

  • 抑制警告(我打算在失败的情况下抛出自己的异常)
  • 从流中获取错误信息(至少是响应代码)

php http file stream

76
推荐指数
3
解决办法
7万
查看次数

查找JavaScript数组值的所有组合

如何在N个可变长度的JavaScript数组中生成所有值的组合?

假设我有N个JavaScript数组,例如

var first = ['a', 'b', 'c', 'd'];
var second = ['e'];
var third =  ['f', 'g', 'h', 'i', 'j'];
Run Code Online (Sandbox Code Playgroud)

(在这个例子中有三个数组,但它有N个数组用于解决问题.)

我想输出它们的所有值的组合,以产生

aef
aeg
aeh
aei
aej
bef
beg
....
dej
Run Code Online (Sandbox Code Playgroud)

编辑:这是我工作的版本,使用ffriend接受的答案作为基础.

var allArrays = [['a', 'b'], ['c', 'z'], ['d', 'e', 'f']];

 function allPossibleCases(arr) {
  if (arr.length === 0) {
    return [];
  } 
else if (arr.length ===1){
return arr[0];
}
else {
    var result = [];
    var allCasesOfRest = allPossibleCases(arr.slice(1));  // recur with the rest of array
    for (var …
Run Code Online (Sandbox Code Playgroud)

javascript algorithm

57
推荐指数
8
解决办法
5万
查看次数

zipWith Python中的模拟?

在Python中,Haskell的zipWith函数的类比是什么?

zipWith :: (a -> b -> c) -> [a] -> [b] -> [c]
Run Code Online (Sandbox Code Playgroud)

python haskell

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

排序数组元素(带数字的字符串),自然排序

我有一个像阵列;

["IL0 Foo", "PI0 Bar", "IL10 Baz", "IL3 Bob says hello"]
Run Code Online (Sandbox Code Playgroud)

并且需要对它进行排序以使它看起来像;

["IL0 Foo", "IL3 Bob says hello", "IL10 Baz", "PI0 Bar"]
Run Code Online (Sandbox Code Playgroud)

我尝试过一种排序功能;

function compare(a,b) {
  if (a < b)
     return -1;
  if (a > b)
    return 1;
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

但是这给了订单

["IL0 Foo", "IL10 Baz", "IL3 Bob says hello", "PI0 Bar"]
Run Code Online (Sandbox Code Playgroud)

我试图想到一个可行的正则表达式,但无法理解它.
如果它有助于格式将始终是2个字母,x数量的数字,然后任意数量的字符.

javascript sorting jquery

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

处理生成器中抛出的异常

我有一个生成器和一个消耗它的函数:

def read():
    while something():
        yield something_else()

def process():
    for item in read():
        do stuff
Run Code Online (Sandbox Code Playgroud)

如果生成器抛出异常,我想在使用者函数中处理它,然后继续使用迭代器直到它耗尽.请注意,我不希望在生成器中有任何异常处理代码.

我想到了类似的东西:

reader = read()
while True:
    try:
        item = next(reader)
    except StopIteration:
        break
    except Exception as e:
        log error
        continue
    do_stuff(item)
Run Code Online (Sandbox Code Playgroud)

但这对我来说相当尴尬.

python exception generator

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