小编Gab*_*iel的帖子

用于查找素数的Python while循环

作为Python的第一个练习,我正在尝试使用循环编写程序来查找素数.一切都与for循环一起工作所以我试图使用while循环.这有效,但程序返回一些不正确的数字.

import math
# looking for all primes below this number
max_num = int(input("max number?: "))

primes = [2]  # start with 2
test_num = 3  # which means testing starts with 3

while test_num < max_num:
    i = 0
    # It's only necessary to check with the primes smaller than the square
    # root of the test_num
    while primes[i] < math.sqrt(test_num):
        # using modulo to figure out if test_num is prime or not
        if (test_num % primes[i]) == 0: …
Run Code Online (Sandbox Code Playgroud)

python primes while-loop python-3.x

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

以简单的方式转换包含多个子列表的列表

我有以下输入数据列表

# Input
aa = [
    [[1.672, 15.404106853988145], [1.672, 15.09023236677281],
     [1.672, 14.326477347851142], [1.672, 15.000459521550175],
     [1.672, 13.151534525114727]],
    [[1.071, 15.37432077372023], [1.071, 14.702364761334275],
     [1.071, 14.285562362585377], [1.071, 14.968122718390234],
     [1.071, 13.429261607006364]],
    [[1.278, 15.37737475413325], [1.278, 15.009362745118009],
     [1.278, 14.328183750447181], [1.278, 14.98111244150097],
     [1.278, 13.553743514980896]],
    [[1.071, 15.37901291568889], [1.071, 14.703489628076182],
     [1.071, 14.290814520089102], [1.071, 14.977559474289448],
     [1.071, 13.128128537587324]]
]
Run Code Online (Sandbox Code Playgroud)

我需要转变成

# Output
bb = [
    [[1.672, 1.071, 1.278, 1.071],
     [15.404106853988145, 15.37432077372023, 15.37737475413325,
      15.37901291568889]],
    [[1.672, 1.071, 1.278, 1.071],
     [15.09023236677281, 14.702364761334275, 15.00936274511801,
      14.703489628076182]],
    [[1.672, 1.071, 1.278, 1.071],
     [14.326477347851142, 14.285562362585377, 14.328183750447181,
      14.290814520089102]],
    [[1.672, 1.071, 1.278, …
Run Code Online (Sandbox Code Playgroud)

python list

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

从数组中删除前导/尾随零的索引

给定一个一维数组

import numpy as np

arr = np.array([0, 0, 0, 0, 0, 0, 8, 83, 120, 111, 31, 37, 10, 0, 0, 0, 0, 0, 0, 0])
Run Code Online (Sandbox Code Playgroud)

我可以使用删除前导/尾随零numpy.trim_zeros

np.trim_zeros(arr)
array([  8,  83, 120, 111,  31,  37,  10])
Run Code Online (Sandbox Code Playgroud)

但我还需要已删除元素的索引,或者至少是最极端元素的索引。在上述情况下,这些将是

[5, 13]
Run Code Online (Sandbox Code Playgroud)

我可以通过for循环检查每个元素来查看之前处理的元素是否是0并在该条件为 False 时停止,但我想知道是否已经开发了一个numpy可以完成此操作的函数。

python arrays numpy

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

在numpy数组中查找多个元素的索引

给定一个整数数组,我需要找到存储在不同数组中的许多元素的索引。这是:

import numpy as np
a1 = np.array([ 4, 5, 6, 1, 2, 3, 7, 86, 9, 15])
a2 = np.array([ 2, 3, 5, 6, 9])
Run Code Online (Sandbox Code Playgroud)

a1我的初始元素数组在哪里,a2是包含我需要在a1.

在这种情况下,结果应该是:

a3 = ([4, 5, 1, 2, 8])
Run Code Online (Sandbox Code Playgroud)

这似乎是一个相当简单的操作,但我一直无法弄清楚如何去做。

python arrays numpy

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

在同一轴上绘制多个标签

考虑一个简单的绘图,其中绘制了两个不同的群体:

在此输入图像描述

我想添加两个单独的 y 标签,一个用于顶部人口,另一个用于同一左侧 y 轴上的下方人口。我见过的所有类似问题都涉及两个单独轴上的标签(即:一个在左边,一个在右边),这不是我需要的。

我怎样才能做到这一点?

import numpy as np
import matplotlib.pyplot as plt

N = 50
a = np.random.uniform(100., 120., N)
b = np.random.uniform(10., 20., N)

plt.scatter(range(N), a)
plt.scatter(range(N), b)
plt.show()
Run Code Online (Sandbox Code Playgroud)

这个问题不是关于向图例添加标签,如此处所述

python matplotlib

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

递归修改具有不规则形状的列表

aa名单是我的输入,以及bb列表我期望的输出.操作相当简单(将每个元素更改aa为字符串,附加一些字符,同时保持原始形状),但我这样做的方式似乎不必要地复杂化.

是否有更好的(更多Pythonic)方式来做到这一点?

aa = [0, 5, 6, [8], 3, [9, 2]]

bb = []
for e1 in aa:
    if type(e1) == list:
        bb2 = []
        for e2 in e1:
            bb2.append('sss' + str(e2))
        bb.append(bb2)
    else:
        bb.append('sss' + str(e1))

print(bb)
['sss0', 'sss5', 'sss6', ['sss8'], 'sss3', ['sss9', 'sss2']]
Run Code Online (Sandbox Code Playgroud)

python list

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

为“编辑-环绕-以XX个字符环绕”设置Sublime Text快捷方式

我需要Edit - Wrap - Wrap at XX characters在Sublime Text 3中为命令设置快捷方式。

我知道AutoWrap程序包,但是当您编写将长行分割为新行时,该包有效。

在Sublime Text 3中添加Word Wrap Toggle快捷键的文章介绍了如何添加快捷方式而不破坏长行,而只是将它们包装起来。

我需要以80个字符包装,但是如果可以设置字符数,那将是很棒XX的。

keyboard-shortcuts sublimetext3

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

matplotlib 参数“edgecolor”不适用于 quiver?

matplotlib.axes.Axes.quiver文档指出:

箭头轮廓

线宽边缘颜色可用于自定义箭头轮廓

然而,一个简单的测试代码表明它edgecolor显然什么也没做。我错过了什么吗?

import matplotlib.pyplot as plt
import numpy as np

X = np.arange(-3, 3, 1)
Y = np.arange(-3, 3, 1)
U, V = np.meshgrid(X, Y)

plt.quiver(X, Y, U, V, edgecolor='r')
plt.show()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

python matplotlib

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

python - 在嵌套列表中的整数中添加一个数字

这是我正在尝试做的MWE:

lis = []
# Initialize empty list
for i in range(2):
    lis.append([[0]]*2)

# First print
print lis

# Second print
print lis[0][1][0]

# Modify item
lis[0][1][0] += 1

# Third print
print lis
Run Code Online (Sandbox Code Playgroud)

一个 print返回列表[[[0], [0]], [[0], [0]]]是正确的,我有一个第一个列表,它由几个列表组成,每个列表也由几个列表组成(我需要这个嵌套列表,我正在做什么).所述第二 print返回索引0和1中的项目作为0这也是正确的.但第三个 print显示新列表为:

[[[1], [1]], [[0], [0]]]
Run Code Online (Sandbox Code Playgroud)

代替:

[[[0], [1]], [[0], [0]]]
Run Code Online (Sandbox Code Playgroud)

这就是我的目标.我究竟做错了什么?

python list python-2.x

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

if语句简化一行

我有一个单行if语句,看起来像这样:

var = var if var < 1. else 1.
Run Code Online (Sandbox Code Playgroud)

第一部分var = var看起来有点难看,我敢打赌,有更多的pythonic方式来说这个.

python if-statement

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