小编Kev*_*vin的帖子

Python - 为什么find和index方法的工作方式不同?

在Python,findindex非常相似的方法,用于查找值序列类型.find用于字符串,而index用于列表和元组.它们都返回找到所提供参数的最低索引(最左边的索引).

例如,以下两个都将返回1:

"abc".find("b")
[1,2,3].index(2)
Run Code Online (Sandbox Code Playgroud)

然而,我有点困惑的一点是,即使这两种方法非常相似,并且几乎完全相同的角色,只是针对不同的数据类型,它们对于尝试查找不在序列中的某些内容有非常不同的反应.

"abc".find("d")
Run Code Online (Sandbox Code Playgroud)

返回-1,表示"未找到",而

[1,2,3].index(4)
Run Code Online (Sandbox Code Playgroud)

提出异常.

基本上,为什么他们有不同的行为?有没有特别的原因,或者只是一个奇怪的不一致而没有特别的原因?

现在,我不是在问这个问题 - 很明显,try/ exceptblock或条件in语句都可行.我只想问一下,在这种特殊情况下使行为不同的理由是什么.对我来说,为了保持一致性,有一个特定的行为说没有找到会更有意义.

另外,我不是在问这个理由是否是一个好理由的意见 - 我只是好奇原因什么.

编辑:有些人已经指出字符串也有一个index方法,就像index列表的方法一样,我承认我不知道,但这只是让我想知道为什么,如果字符串都有,列表只有index.

python indexing methods consistency find

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

Python - libs子文件夹是什么?

对我来说,它位于C:\ Python33\libs.

供参考 - 这与C:\ Python33\Lib 不是同一个文件夹 - 注意大小写和缺少's'.

在我正在处理的一台计算机上,我只是将一个.py文件放入libs文件夹中,可以导入并使用它就像一个库/模块(对不起,我真的不太懂术语),无论项目在哪里我正在努力的是.

但是,在尝试在另一台计算机上复制它时,这不起作用.尝试导入只会给出"没有名为X的模块"错误.

所以,显然我误解了libs文件夹的用途,以及它与Lib文件夹的区别.

那么,究竟有什么区别?

python directory libs

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

GCC 4.8.1 C++ 11完成了吗?

操作系统是Windows.

我首先要说的是我没有使用C++或任何其他编译语言的经验.我已经使用了CPython并且熟悉它,但是,直到今天早些时候,我甚至都没有看过C++源代码.

我正在尝试自学C++,所以我一直在玩它,我遇到的一个问题是错误:

error: 'to_string' was not declared in this scope
Run Code Online (Sandbox Code Playgroud)

显然,to_string是一个C++ 11的东西,应该没问题.我下载了最新的MinGW,将它添加到我的路径中 - 我已经检查并运行了

g++ - v
Run Code Online (Sandbox Code Playgroud)

确实告诉我,我安装了4.8.1版本.我正在使用的IDE,Code :: Blocks发现它没有问题,但它根本不会使用任何C++ 11的东西,给我错误,如上面的那个.不是C++ 11独有的东西编译得很好.

在编译器标志下有一个部分"遵循C++ 11语言标准",我已经检查过,但是,即便如此,我也会遇到相同的错误.我真的不确定发生了什么 - 我看了这个,所有的建议是更新IDE或MinGW(两者都是最新的),或选择那个标志,就像我一样说,已经被选中了.

有更多C++经验的人是否知道可能会发生什么?b

c++ mingw codeblocks c++11

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

“半字节”实际上用作术语吗?

好的,如果一个字节是 8 位,那么半字节就是 4 位。你可以将四分之一字节作为 2 位(尽管我猜想,如果有的话,它会被称为双位)。

虽然这是一致的,但如果我使用这个术语,有人会感到困惑(或惊讶)吗?显然,他们很容易理解我所指的内容,但这实际上是一个常用术语吗?

byte bit

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

将列表放在与另一个列表相同的顺序中

有很多类似的措辞,但我无法找到一个实际映射到我的预期语义的问题.

有两个列表,A并且B,我想重新排列B,使它与相同的相对顺序A- 最大元素位于与最大元素B的当前位置相同的位置A,并且对于最小元素是相同的,等等.

请注意,A没有排序,我也不希望它.

例如,如果输入以下内容:

a = [7, 14, 0, 9, 19, 9]
b = [45, 42, 0, 1, -1, 0]
Run Code Online (Sandbox Code Playgroud)

我想要输出[0, 42, -1, 0, 45, 1].

请注意,预期的输出不是[0, 45, 1, 0, 42, -1],这就是你将它们压缩并排序A并获取所得到的元素B(这是我所看到的所有其他问题所需要的).

这是我的代码:

def get_swaps(x):
    out = []

    if len(x) <= 1:
        return out

    y = x[:]
    n = -1

    while len(y) != 1:
        pos = y.index(max(y)) …
Run Code Online (Sandbox Code Playgroud)

python sorting list

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

Python - 查找子串的所有出现(包括重叠)?

好的,所以我发现了这一点:在Python中查找所有出现的子字符串

其中说,为了使索引重叠列表中的子串的出现,您可以使用:

[m.start() for m in re.finditer('(?=SUBSTRING)', 'STRING')]

哪个有效,但我的问题是要查找的字符串和子字符串都是由变量定义的.我不太了解正则表达式知道如何处理它 - 我可以使用非重叠的子串,它只是:

[m.start() for m in re.finditer(p3, p1)]

谢谢.

编辑:

因为有人问,我会继续进行说明.P1和P3可以是任何字符串,但如果他们成功了,例如p3 = "tryt"p1 = "trytryt",其结果应该是[0, 3].

python regex string substring

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

Python - 是否可以将变量设置为运算符?

我正在开发一堆具有相同基本结构的函数 - 它们采用两个列表并使用循环为两个列表成对地执行特定操作(例如,一个将列表中的每个元素提升到表示的幂通过第二个列表中的相应元素).

由于所有这些功能仅由操作员区分,我想知道 - 是否可以将变量设置为运算符?例如,你能做什么(类似的东西):

var = +
var2 = 5 var 7       #var2 is now 12
Run Code Online (Sandbox Code Playgroud)

我知道具体不起作用,但是有类似的东西可以起作用吗?

python variables operation

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

为什么使用int函数而不是void?

我正在查看一些示例函数和方法(我目前在C++类中),我注意到有一些函数,而不是无效,它们就像是

int myFunction() {
   // ...;
   return 0;
}
Run Code Online (Sandbox Code Playgroud)

省略号显然是其他一些陈述.为什么他们归零?每次运行函数时返回特定值有什么意义?

我知道main()必须是int(至少根据标准),因为它与退出代码相关(或者是?),因此可以与操作系统一起使用.但是,我想不出非主要功能会这样做的原因.

是否有任何特殊原因可能有人想要这样做,而不是简单地创建一个void函数?

c++

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

还有链接插入操作符的其他问题吗?

所以,我今天早些时候正在搞乱C++,尤其是链式插入运算符.我注意到一些对我来说很奇怪的事情.

#include <iostream>
using namespace std;

size_t& foo(size_t& n) {
    ++n;
    return n;
}

int main() {
    size_t bar = 5;
    cout << bar << " a " << foo(bar) << " b " << bar;
    cin >> bar;    //Ignore this, it's only here as an easy way to keep the window open
}
Run Code Online (Sandbox Code Playgroud)

运行这个,而不是5 a 6 b 6实际给出6 a 6 b 5.显然,插入操作数从右到左进行计算,然后从左到右打印,这可以解释为什么更新的值出现在函数调用之前,以及之后的原始值.

当然,这可以通过cout foo(bar)自己的线路来解决,但我离题了.

在链接插入运算符时,我是否应该注意其他任何奇怪的事情?此外,有谁知道插入操作符为什么这样做?

c++

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

Python - 什么是lambdas?

我理解他们做了什么以及如何使用它们,但我仍然对它们为什么包含在Python中感到困惑.在正常的功能定义风格上使用它们有什么好处?

我能想到的唯一真正的区别是你可以在表达式中创建它们.例如,如果myList是一个int列表,并且您想要为每个元素添加一个,则可以使用

list(map(lambda x: x+1, myList))
Run Code Online (Sandbox Code Playgroud)

而如果你想用函数定义来做,你必须在别处定义它,然后传递该变量.

但是,我非常怀疑这种相对较小的便利性是否可以证明它们被包含在语言中,所以我猜这里有一些我不知道的东西.或者,也许,我低估了能够在这样的行内创建函数的有用性.

所以,这基本上是我的问题 - 什么是lambdas应该用于什么?为什么包括在内?

python lambda

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

为什么使用哈希而不是测试真正的平等?

我最近一直在研究Python的字典(我相信它们在其他语言中被称为关联数组),并且对其键的一些限制感到困惑.

首先,dict键必须是不可变的.当我查看其背后的逻辑时,答案是字典像哈希表一样查找键的值,因此不可变键(如果它们可以被清除)可能会改变它们的哈希值,从而在检索值时导致问题.

我理解为什么会这样,但是我仍然对使用哈希表的意义感到困惑.如果你只是没有散列键并测试真正的相等性(假设压缩构造的对象比较相等),你可以复制字典的大部分功能,而不仅仅是使用两个列表.

所以,我想这是我真正的问题 - 使用哈希来查找价值而不是平等的理由是什么?

如果我不得不猜测,那很可能只是因为比较整数是非常快和优化的,而比较其他类的实例可能不是.

python hash dictionary

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

类和结构的一般术语?

我知道结构与类非常相似,只有成员访问和继承默认为public.通常,它们被用作POD类型,但同样,这只是一种惯例.

尽管差异很小(以及使用它们的惯例的差异),但很明显,类和结构只是对某些东西的略微不同的解释,其中某些东西定义了一组对象的行为.那是什么东西

我知道类通常是如何定义的,但结构也符合定义,至少在C++中,结构意味着与类略有不同.或者你只是简单地区分一个类(作为一个概念)和C++类(与C++结构一起,将是类概念的特定实现/方法)?

c++

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