小编mat*_*ots的帖子

Python中的列表是否有str.split等价物?

如果我有一个字符串,我可以使用以下str.split方法将其拆分为空格:

"hello world!".split()
Run Code Online (Sandbox Code Playgroud)

回报

['hello', 'world!']
Run Code Online (Sandbox Code Playgroud)

如果我有一个像这样的列表

['hey', 1, None, 2.0, 'string', 'another string', None, 3.0]
Run Code Online (Sandbox Code Playgroud)

是否有分裂方法会分裂None并给我

[['hey', 1], [2.0, 'string', 'another string'], [3.0]]
Run Code Online (Sandbox Code Playgroud)

如果没有内置方法,最好的Pythonic /优雅方法是什么?

python string list

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

Visual Studio"非法使用此类型作为表达式"

我刚刚开始使用Visual Studio(我从dreamspark获得了VS 2012,并且我已经开始使用Windows了很长时间)并且我遇到了一些麻烦.

我的Source Files文件夹下有一个名为"main.c"的文件,如下所示:

#include <stdio.h>

typedef struct S_s S;
struct S_s {
    void* x;
};

int main(int argc, char** argv)
{
    int N;
    scanf("%d", &N);

    S* s;
    printf("%p", s);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

当我尝试构建它时,给出了以下错误消息:

Error   3   error C2065: 's' : undeclared identifier    c:\users\math4tots\documents\visual studio 2012\projects\algorithms\lecture1\main.c 13  1   Lecture1
Error   4   error C2065: 's' : undeclared identifier    c:\users\math4tots\documents\visual studio 2012\projects\algorithms\lecture1\main.c 14  1   Lecture1
Error   2   error C2275: 'S' : illegal use of this type as an expression    c:\users\math4tots\documents\visual studio 2012\projects\algorithms\lecture1\main.c …
Run Code Online (Sandbox Code Playgroud)

c visual-studio

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

当字符串相当于旋转时

我有很多字符串.就我的目的而言,如果一个是另一个的旋转,则两个字符串是等价的(例如'1234'相当于'3412').

什么是在Python中处理每个字符串一次(直到旋转)的有效方法?

我想要的天真实现可能看起来像:

class DuplicateException(Exception): pass
seen = set()
for s in my_strings:
  try:
    s2 = s+s
    for t in seen:

      # Slick method I picked up here in SO
      # for checking whether one string is
      # a rotation of another
      if len(s) == len(t) and t in s2:
        raise DuplicateException()

    seen.add(s)
    process(s)
  except DuplicateException: pass
Run Code Online (Sandbox Code Playgroud)

python string algorithm

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

是否存在未同步的java.util.Stack?

是否有不同步的版本java.util.Stack

ArrayList 几乎拥有我想要的一切,除了似乎没有一个方法可以在分摊的常数时间内删除最后一个元素.

我想要的东西可以像堆栈一样,但仍然让我可以随意访问元素.

如果真的没有什么,对我来说只是推出自己的或者只是使用它并不是什么大不了的事情java.util.Stack,但我觉得很奇怪,我找不到Stack非同步的对应物,我认为它可能值得一提(Googling似乎只是指向其他实现,而不是标准库中的类).

java stack standard-library

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

在没有默认java.policy文件的情况下运行Java Security Manager

我不想修改我的java主目录中的任何内容,但是,我担心有时我的默认java.policy文件可能过于宽松.当我使用该-Djava.security.manager选项运行java时,有没有办法让我使用指定的策略文件作为唯一的策略文件?

如果我添加一个-Djava.security.policy=myPolicy.policy选项,它除了使用默认策略文件之外还使用我的策略文件 - 这很糟糕,因为看起来仍然授予了在默认策略文件中授予的所有权限.

java security securitymanager

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

在Python中给定一个实例创建一个类的新实例

在Python中,如果我有一个对象,比如说x,那么如何创建一个新对象,y以便xy属于同一类?

在 Java 中,我想要的代码看起来像这样:

Object y = x.getClass().newInstance();
Run Code Online (Sandbox Code Playgroud)

python oop

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

Python如何知道类中的变量是方法还是变量?

print(hasattr(int,         '__call__'))
print(hasattr(lambda x: x, '__call__'))
print('')

class A(object):
    a = int
    b = lambda x : x

print(A.a)
print(A.b)
Run Code Online (Sandbox Code Playgroud)

结果是

True
True

<type 'int'>
<unbound method A.<lambda>>
Run Code Online (Sandbox Code Playgroud)

Python如何确定将成为一种方法(就像A.b这里一样)以及它本身将会是什么(就像A.a这里一样)?

python

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

javascript中的裸对象是ECMAScript标准的一部分吗?

我遇到过这篇文章,建议如果你的密钥总是字符串,那么就需要使用'裸对象'来满足你的hashmap.

裸对象是使用null原型值创建的对象,例如Object.create(null).使用对象文字符号(即{})不会创建裸对象,因为它们被设置Object.prototype为原型.

文章指出裸机对象的优点是你可以将它们用作哈希映射,而不必担心内置键,比如toString在使用同名密钥时可能会导致错误.

这种行为是ES5和/或ES6标准的一部分吗?也就是说,如果我在代码中使用裸对象作为字符串键哈希映射,我可以依赖我的代码以我期望的方式运行吗?这里有什么警告吗?

javascript ecmascript-5 ecmascript-6

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

Python中的包装类

我想要一个包装类,其行为与它包装的对象完全相同,只是它添加或覆盖了一些select方法.

我的代码目前看起来像这样:

# Create a wrapper class that equips instances with specified functions
def equipWith(**methods):

  class Wrapper(object):
    def __init__(self, instance):
      object.__setattr__(self, 'instance',instance)

    def __setattr__(self, name, value):
      object.__setattr__(object.__getattribute__(self,'instance'), name, value)

    def __getattribute__(self, name):
      instance = object.__getattribute__(self, 'instance')

      # If this is a wrapped method, return a bound method
      if name in methods: return (lambda *args, **kargs: methods[name](self,*args,**kargs))

      # Otherwise, just return attribute of instance
      return instance.__getattribute__(name)

  return Wrapper
Run Code Online (Sandbox Code Playgroud)

为了测试这个,我写道:

class A(object):
  def __init__(self,a):
    self.a = a

a = A(10)
W = …
Run Code Online (Sandbox Code Playgroud)

python wrapper

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

在Scala中,使用下划线制作闭包的规则是什么?

起初我曾相信使用下划线来制作闭包(例如println _)只是使用箭头的简写(例如x => println x),但我最近才知道你也可以做以下事情:

def f(a: Int, b: Int) = a + 2 * b
List(1, 2, 3).reduce(f _)
Run Code Online (Sandbox Code Playgroud)

鉴于我过去的假设,f _看起来像一个闭包,它只接受一个参数并且只传递一个参数f.我以为它会告诉我它无法编译因为f需要两个参数,并且reduce应该期望一个带有两个参数的函数.但是就像我写的那样:

def f(a: Int, b: Int) = a + 2 * b
List(1, 2, 3).reduce((x, y) => f(x, y))
Run Code Online (Sandbox Code Playgroud)

这里发生了什么?使用下划线创建闭包的规则是什么?

scala scala-placeholder-syntax eta-expansion

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