小编Tra*_*ish的帖子

Pythonic方式在列表推导中使用第二个条件

我们假设以下函数:

def myfun(my_list, n, par1=''):
    if par1 == '':
        new_list = [[my_fun2(i,j) for j in range(n)] for i in range(n)]
    else:
        new_list = [[my_fun2(i,j) for j in range(n)] for i in range(n) if my_fun2(i,n) == par1]
    return new_list
Run Code Online (Sandbox Code Playgroud)

如您所见,有两种不同的场景取决于par1.我不喜欢第3行和第5行几乎相同,并且不遵循DRY(不要重复自己)原则.如何改进此代码?

python if-statement list-comprehension

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

合并具有不同 left_on 和 right_on 长度列表的两个数据帧

我有以下问题。我有两个数据框,希望根据第一个数据框中的两列和第二个数据框中的一列来合并它们:

import pandas as pd

new1 = pd.DataFrame({0:['a','b','c'], 1:['q1','q2','q3'], 2:['t3','t2','t1']})
new2 = pd.DataFrame({0:['aq1','bq2','cq3'], 1:['la1','la2','la3']})
pd.merge(new1,new2, how='inner', left_on=[0,1], right_on=[0])
Run Code Online (Sandbox Code Playgroud)

此代码不起作用,因为

ValueError: len(right_on) must equal len(left_on)
Run Code Online (Sandbox Code Playgroud)

pandas 对于这种情况有一些标准方法吗?或者解决问题的唯一方法是在 new1 数据框中创建附加列:

import pandas as pd

new1 = pd.DataFrame({0:['a','b','c'], 1:['q1','q2','q3'], 2:['t3','t2','t1']})
new1[3] = new1[0] + new1[1]
new2 = pd.DataFrame({0:['aq1','bq2','cq3'], 1:['la1','la2','la3']})
print(pd.merge(new1,new2, how='inner', left_on=[3], right_on=[0]))
Run Code Online (Sandbox Code Playgroud)

python merge pandas

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

Beautifulsoup 返回不完整的 html

我现在正在读一本关于 Python 的书。有一个家庭作业的小项目:“编写一个程序,访问 Flickr 或 Imgur 等照片共享网站,搜索一类照片,然后下载所有生成的图像。” 建议只使用 webbrowser、requests 和 bs4 库。

我不能为 Flickr 做这件事。我发现解析器不能进入元素内部(div class="interaction-view")。在 Chrome 中使用“Inspect element”我可以看到里面有一些“div”元素和“a”元素。但是,当我使用 bs4 库时,它看不到它。

我的代码是这样的:

#!/usr/bin/env python3
# To download photos from Flickr

import requests, bs4

search_name = "spam"
website_name = requests.get('https://www.flickr.com/search/?text='
                       + search_name)
website_name.raise_for_status()
parse_obj = bs4.BeautifulSoup(website_name.text, "html.parser")
elements = parse_obj.select('body #content main .main.search-photos-results \
                .view.photo-list-view.requiredToShowOnServer \
                .view.photo-list-photo-view.requiredToShowOnServer.awake \
                .interaction-view')
print(elements)
Run Code Online (Sandbox Code Playgroud)

它只打印:

[<div class="interaction-view"></div>, <div class="interaction-view"></div>...]
Run Code Online (Sandbox Code Playgroud)

没有任何嵌套元素,我不明白为什么...谢谢!

python parsing flickr beautifulsoup

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

PyQt5 退出按钮

你能解释一下为什么退出按钮在这种情况下不能正常工作:

import sys
from PyQt5.QtWidgets import QWidget, QPushButton, QApplication
from PyQt5.QtCore import QCoreApplication


class Example(QWidget):

    def __init__(self):
        super().__init__()       
        self.initUI()


    def initUI(self):               
        qbtn = QPushButton('Quit', self)
        qbtn.clicked.connect(QCoreApplication.instance().quit)
        qbtn.move(50, 50)       
        self.setGeometry(300, 300, 250, 150)   
        self.show()


app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
Run Code Online (Sandbox Code Playgroud)

但如果我在函数中包含最后三行,则有效:

def fun():
    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())

fun()
Run Code Online (Sandbox Code Playgroud)

我不明白机制:(

python pyqt pyqt5

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