小编jua*_*aga的帖子

如何在没有终端提示的情况下从IPython会话中复制

通常,我的工作流程涉及在IPython shell中进行数据清理/修改.自从IPython 5.0版本以及终端界面的所有重大升级以来,这已经变得特别精彩.所以,假设我试图修改一些非结构化数据:

In [11]: for i, (num, header, txt) in enumerate(data):
    ...:     header = [e.strip() for e in header.strip().split('\n')]
    ...:     header[4] = header[4].strip(',').split(',')
    ...:     data[i] = (num, header, txt)
    ...:
Run Code Online (Sandbox Code Playgroud)

太棒了,它有效!但现在,我真的想在编辑器中将其添加到脚本中.如果我从终端复制并粘贴,我会捕获左边的所有垃圾.我可以在编辑器中轻松地清理它,但如果我可以直接将代码从终端直接复制到我的剪贴板而不触摸鼠标而且不需要抓取额外的东西,这将是很棒的.在IPython中有这样的功能吗?

python copying ipython

63
推荐指数
3
解决办法
6693
查看次数

Python 3.6+中是否有格式化的字节字符串文字?

我正在寻找格式化的字节字符串文字.具体来说,相当于

name = "Hello"
bytes(f"Some format string {name}")
Run Code Online (Sandbox Code Playgroud)

可能是类似的东西fb"Some format string {name}".

这样的事情存在吗?

python string-interpolation python-3.x f-string

25
推荐指数
4
解决办法
4770
查看次数

如何在 Python 中键入提示通用数字类型?

如果之前有人问过这个问题,但我找不到任何相关的答案,请原谅我。

考虑一个将数字类型作为输入参数的函数:

def foo(a):
    return ((a+1)*2)**4;
Run Code Online (Sandbox Code Playgroud)

这适用于整数、浮点数和复数。

是否有基本类型,以便我可以进行类型提示(真实现有类型/基类),例如:

def foo(a: numeric):
    return ((a+1)*2)**4;
Run Code Online (Sandbox Code Playgroud)

此外,我需要在集合类型参数中使用它,例如:

from typing import Collection;
def foo(_in: Collection[numeric]):
    return ((_in[0]+_in[1])*2)**4;
Run Code Online (Sandbox Code Playgroud)

python types type-hinting python-3.x

23
推荐指数
3
解决办法
6678
查看次数

用于 Python 3.8 的 Pip

如何为 Python 3.8 安装 Pip?我将 3.8 设为我的默认 Python 版本。

sudo apt install python3.8-pip给出unable to locate package python3.8-pip python3.8 -m pip install [package]no module named pip 我无法运行,sudo apt install python3-pip因为它为 Python 3.6 安装了 pip

人们使用什么?

python pip python-3.x

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

Dataclass:如何创建一个不需要初始化且自动生成的字段?

我使用 field(init= False) 来禁用初始化 self.ref。那么它就是 post 中的一个值。以下代码引发AttributeError: 'Data' object has no attribute 'ref'

from dataclasses import dataclass, field
def make_list(): return [[0] for k in range(9)]
@dataclass
class Data:
    rows: list
    cols: list
    blocks: list
    ref: dict = field(init=False)

    def __init__(self, slots=None):
        self.rows = make_list()
        self.cols = make_list()
        self.blocks = make_list()
        if slots:
            for i in range(9):
                for j in range(9):
                    self.cols[j][i] = self.rows[i][j] = slots[i][j]

    def __post_init__(self):  
          print("post-init executed")
        self.ref = {"rows": self.rows, "cols": self.cols, "blocks": self.blocks}
test …
Run Code Online (Sandbox Code Playgroud)

python python-3.x python-dataclasses

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

iter(可调用,哨兵)的用途是什么?

所以,我正在观看Raymond Hettinger的演讲,将代码转换为美丽的,惯用的Python,并且他提出了iter我从未意识到的这种形式.他的例子如下:

代替:

blocks = []
while True:
    block = f.read(32)
    if block == '':
        break
    blocks.append(block)
Run Code Online (Sandbox Code Playgroud)

使用:

blocks = []
read_block = partial(f.read, 32)
for block in iter(read_block, ''):
    blocks.append(block)
Run Code Online (Sandbox Code Playgroud)

检查完文档iter,我发现了一个类似的例子:

with open('mydata.txt') as fp:
    for line in iter(fp.readline, ''):
        process_line(line)
Run Code Online (Sandbox Code Playgroud)

这看起来对我很有用,但我想知道你是否Pythonistas知道这个构造的任何不涉及I/O读取循环的例子?也许在标准库中?

我可以想到非常人为的例子,如下所示:

>>> def f():
...     f.count += 1
...     return f.count
... 
>>> f.count = 0
>>> list(iter(f,20))
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, …
Run Code Online (Sandbox Code Playgroud)

python

17
推荐指数
3
解决办法
3571
查看次数

在Pandas中,.iloc方法是否提供副本或视图?

我发现结果有点随机.有时它是副本有时它是一个视图.例如:

df = pd.DataFrame([{'name':'Marry', 'age':21},{'name':'John','age':24}],index=['student1','student2'])

df
              age   name
   student1   21  Marry
   student2   24   John
Run Code Online (Sandbox Code Playgroud)

现在,让我尝试稍微修改一下.

df2= df.loc['student1']
df2 [0] = 23
df
              age   name
   student1   21  Marry
   student2   24   John
Run Code Online (Sandbox Code Playgroud)

如你所见,没有任何改变.df2是一个副本.但是,如果我将另一名学生添加到数据框中...

df.loc['student3'] = ['old','Tom']
df
               age   name
    student1   21  Marry
    student2   24   John
    student3  old    Tom
Run Code Online (Sandbox Code Playgroud)

尝试再次改变年龄..

df3=df.loc['student1']
df3[0]=33
df
               age   name
    student1   33  Marry
    student2   24   John
    student3  old    Tom
Run Code Online (Sandbox Code Playgroud)

现在df3突然成了一个观点.到底是怎么回事?我想价值'旧'是关键?

python dataframe pandas

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

__new__ 方法给出错误对象。__new__() 只需要一个参数(要实例化的类型)

为什么下面的代码会出错?

class Foo:
    def __new__(cls, *args, **kwargs):
        print("Creating Instance")
        instance = super(Foo, cls).__new__(cls,*args, **kwargs)
        return instance

    def __init__(self, a, b):
        self.a = a
        self.b = b

z= Foo(2,3)
Run Code Online (Sandbox Code Playgroud)

它给出了以下错误

TypeError: object.__new__() takes exactly one argument (the type to instantiate)
Run Code Online (Sandbox Code Playgroud)

python magic-methods python-3.x

15
推荐指数
5
解决办法
6756
查看次数

pandas中df.reindex()和df.set_index()方法之间的区别

我很困惑,这很简单,但我没有立即在StackOverflow上找到答案:

  • df.set_index('xcol')使列'xcol'成为索引(当它是df列时).

  • df.reindex(myList)但是,从数据框外部获取索引,例如,从myList我们在其他地方定义的名称列表中获取索引.

我希望这篇文章澄清一下!欢迎增加这篇文章!

python indexing python-3.x pandas reindex

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

Python TypeError:'set'对象不可下标

def create(ids):
    policy = {
        'Statement': []
    }
    for i in range(0, len(ids), 200):
        policy['Statement'].append({
            'Principal': {
                'AWS': list(map(lambda id: f"arn:aws:iam::{id}:root", ids[i:i + 200]))
            }
        })
    return policy
Run Code Online (Sandbox Code Playgroud)

当我对该方法进行函数调用时,create({'1','2'})我在线收到TypeError: 'set' object is not subscriptable错误消息 'AWS': list(map(lambda id: f"arn:aws:iam::{id}:root", ids[i:i + 200]))。来自 java 背景,这与类型转换有某种关系吗?该错误是否意味着我将设置的数据结构传递给列表函数?这怎么可能解决?

python

11
推荐指数
2
解决办法
7万
查看次数