小编Joe*_*don的帖子

Python 漂亮打印嵌套对象

我有 3 个 python 类 A、B 和 C。A 包含 B 对象,B 包含 C 的对象。我想要的是当我打印一个类对象时,它应该以下面的格式打印。C类内部也可以有更多的嵌套。

A:
    loc : XYZ
    qual : ABC
    b :
        name : ABC
        age : 30
        c :
            address : ABC
            phn : 99009
Run Code Online (Sandbox Code Playgroud)

以下是可供参考的类。

class C(object):
    def __init__(self):
        self.address='ABC'
        self.phn=99009

class B(object):
    def __init__(self):
        self.name='ABC'
        self.age=30
        self.c = C()

class A(object):
    def __init__(self):
        self.loc = 'XYZ'
        self.qual = 'ABC'
        self.b = B()
Run Code Online (Sandbox Code Playgroud)

python pretty-print

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

检查文本文件是否有另一行 Python

我正在编写一个脚本来将文本文件解析为自己的电子表格,为此我需要通读它们。问题是找出何时停止。Java在阅读时附加了一个方法调用hasNext(),或者hasNextLine()我想知道Python中是否有类似的方法?由于某种原因我在任何地方都找不到这个。

前任:

open(f) as file:
    file.readline()
    nextLine = true
    while nextLine:
        file.readline()
        Do stuff
        if not file.hasNextLine():
            nextLine = false
Run Code Online (Sandbox Code Playgroud)

python

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

对于我的想法,是否有更清晰的正则表达式?

我只需要接受输入作为数值0 to 100,integers并且floats包含最大 two小数位,并编写正则表达式来检查这些条件.

例如,我希望它接受以下值:

0(min), 0.1, 1, 11, 11.1, 11.11, 100(max).
Run Code Online (Sandbox Code Playgroud)

但不是:

-1, 100.1, 111, 1+1, .1, etc.
Run Code Online (Sandbox Code Playgroud)

到目前为止,我提出了^\d?\d+(\.\d\d?)?$它,但它有一堆问题.

刚才在提交本,我看到这个链接中类似的问题侧边栏有什么似乎是解决("^((?:|0|[1-9]\d?|100)(?:\.\d{1,2})?)$"),但它也接受100.01100.99.除此之外,这是一个非常小的问题,它应该工作.

但是有人知道如何修补那个特定的位吗?

python regex python-3.x

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

python列表到'n'字符串数量取决于列表的长度

list在Python中考虑以下内容.

c = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18]
Run Code Online (Sandbox Code Playgroud)

我想在n哪里创建字符串n = len(c)/6.因此,对于此示例,预期输出将是:

str1=1|2|3|4|5|6
str2=7|8|9|10|11|12
str3=13|14|15|16|17|18
Run Code Online (Sandbox Code Playgroud)

我如何使用循环?请注意,长度c始终是倍数6.

python loops list

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

如何在变量中打印控制台日志?

我想输出:

[2, [23]]
Run Code Online (Sandbox Code Playgroud)

但是,当我跑:

console.log([2,[23]]);
Run Code Online (Sandbox Code Playgroud)

我明白了:

(2) [1, Array(1)]
Run Code Online (Sandbox Code Playgroud)

我试过使用这种toString()方法,但我得到了'2,23'.

javascript

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

在另一个属性上调用del时,对象的list属性会发生变化

我对以下代码的行为感到困惑:

data = [0,1,2,3,4,5]

class test():
  def __init__(self,data):
   self.data=data
   self.data2=data

  def main(self):
    del self.data2[3]

test_var = test(data)
test_var.main()
print(test_var.data)
print(test_var.data2)
Run Code Online (Sandbox Code Playgroud)

我认为应该出来的是:

[0,1,2,3,4,5]
[0,1,2,4,5]
Run Code Online (Sandbox Code Playgroud)

我得到的是这个:

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

为什么第二个列表中的元素在未直接更改时会被删除?或者python是否以正常情况发生的方式处理属性?

那么我应该如何改变我得到我想要的代码呢?

python list object del python-3.x

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

使用另一个列表的索引对python列表进行排序

我想对包含数字(比如l1)的python列表进行排序,并使用此列表的索引(排序顺序)重新排列两个不同列表(l2和l3)的元素.我想用标准的python库(不是pandas)实现这一点.我正在使用python 2.7.

例如,让我们说:

l1 = [2,4,5,1]
l2 = ['aa', 'bb', 'cc', 'dd']
l3= ['a_a', 'b_b', 'c_c', 'd_d']
Run Code Online (Sandbox Code Playgroud)

在这里,我想按降序对l1进行排序l1_sorted = [5,4,2,1].

其他列表(l2和l3)将按照l1(l1_sorted)中的排序索引重新排列.在上面的例子中,我们应该:

l2_sorted = ['cc', 'bb', 'aa', 'dd']
l3_sorted = ['c_c', 'b_b', 'a_a', 'd_d']
Run Code Online (Sandbox Code Playgroud)

目前,我正在使用Python(l1_sorted = sorted(l1, reverse=True))的排序函数.但那只能给我l1_sorted.

如何实现我想要的全部功能(即l2_sorted和l3_sorted)?

python list python-2.7

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

如何提高sobel边缘检测器的效率

我正在用Python从头开始编写计算机视觉库,以与rpi相机配合使用。目前,我已经实现了转换为greyscale以及其他一些基本img操作,它们在我的上都运行得相对较快model B rpi3

但是,我的使用sobel运算符的边缘检测功能(维基百科描述)比其他功能慢很多,尽管它确实起作用。这里是:

def sobel(img):
    xKernel = np.array([[-1,0,1],[-2,0,2],[-1,0,1]])
    yKernel = np.array([[-1,-2,-1],[0,0,0],[1,2,1]])
    sobelled = np.zeros((img.shape[0]-2, img.shape[1]-2, 3), dtype="uint8")
    for y in range(1, img.shape[0]-1):
        for x in range(1, img.shape[1]-1):
            gx = np.sum(np.multiply(img[y-1:y+2, x-1:x+2], xKernel))
            gy = np.sum(np.multiply(img[y-1:y+2, x-1:x+2], yKernel))
            g = abs(gx) + abs(gy) #math.sqrt(gx ** 2 + gy ** 2) (Slower)
            g = g if g > 0 and g < 255 else (0 if g …
Run Code Online (Sandbox Code Playgroud)

python performance numpy edge-detection sobel

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

提取python列表中非重复元素的索引

我有一个清单:

input = ['a','b','c','a','b','d','e','d','g','g']
Run Code Online (Sandbox Code Playgroud)

我想要列表中除重复项之外的所有元素的索引。

output = [0,1,2,5,6,8]
Run Code Online (Sandbox Code Playgroud)

python algorithm search

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