Py学习  »  oda  »  全部回复
回复总数  5
3 年前
回复了 oda 创建的主题 » Python如何链接2个列表?

more-itertools 有这个吗 grouper 可能对该任务有用的函数。我 replicate it 在这里:

from itertools import zip_longest
def grouper(iterable, n, *, incomplete='fill', fillvalue=None):
    "Collect data into non-overlapping fixed-length chunks or blocks"
    # grouper('ABCDEFG', 3, fillvalue='x') --> ABC DEF Gxx
    # grouper('ABCDEFG', 3, incomplete='strict') --> ABC DEF ValueError
    # grouper('ABCDEFG', 3, incomplete='ignore') --> ABC DEF
    args = [iter(iterable)] * n
    if incomplete == 'fill':
        return zip_longest(*args, fillvalue=fillvalue)
    if incomplete == 'strict':
        return zip(*args, strict=True)
    if incomplete == 'ignore':
        return zip(*args)
    else:
        raise ValueError('Expected fill, strict, or ignore')

此功能与 zip ( documentation )以如下所示的方式返回元组的迭代器,其中元组的第一个元素是来自 b 元组的第二个元素是一个由三个元素组成的元组,这些元素取自 a .对于本例,返回的迭代器 拉链 链接 1.9 关于 A. , 1.7 接下来的三个要素 A. 等等

a = [902920,28393892,93993992,93938939929,929393993928,38982933939393, 883383938393]
b = [1.9, 1.7, 1.6]

c = zip(b, grouper(a, 3))

for item in c:
    print(item)

输出

(1.9, (902920, 28393892, 93993992))
(1.7, (93938939929, 929393993928, 38982933939393))
(1.6, (883383938393, None, None))

这个 石斑鱼 函数提供了额外的功能。默认情况下,如果长文档中没有足够的元素 A. 列表要填充一个3元组,空元素将被 None .所以你可以设定 fillvalue 您是否希望获得除以下内容以外的值 没有一个 或者,您甚至可以声明,您不希望像本例中那样使用不完整的元组

c = zip(b, grouper(a, 3, incomplete = 'ignore'))

for item in c:
    print(item)

输出

(1.9, (902920, 28393892, 93993992))
(1.7, (93938939929, 929393993928, 38982933939393))
3 年前
回复了 oda 创建的主题 » 如何在python中进行树遍历

self 不是 None . 自己 指类的一个实例。 self.left 是您设置为的实例属性 没有一个 在你的 __init__() 方法创建实例时。因为 自己左边 没有一个 那物体呢 没有一个 没有 inOrder() AttributeError .在你的班级定义中, 自己 (指类的实例)是否具有 顺序() 方法,但它是属性 自己左边 (指 没有一个 )但事实并非如此。

3 年前
回复了 oda 创建的主题 » python中计算事物数量的自然方法是什么?

如果有一个数组,{3,-1,2,5,-7},那么 数组的元素?是五行还是四行?电话号码是多少 在元素0或1中,当存在{3}时,使用单个 要素

名单

a = []

是一个空列表,包含0个元素。

名单

a = [1]

是一个非空列表,有1个元素。第一个也是唯一一个元素可以通过 a[0] .

名单

a = [1, 2, 3, 4, 5] 

是一个非空列表,包含5个元素。第一个元素通过 a[0] ,第二个 a[1] ,第三个 a[2] , ..., 第五个 a[4] .

在python中,我了解到从0开始索引集是很自然的。 如果有一个数组,第一个元素不是第一个,而是第一个 第0个元素。

第一个元素就是第一个元素。在计算机科学中(不仅仅是Python),我们经常使用 零基索引

一般来说 零基索引 ,给定一些非空序列

第n个元素被赋予索引n-1

当我们想要访问 a ,我们知道第三个元素被分配了索引 2 所以我们写 a[2] 访问它。

希望这有帮助!

3 年前
回复了 oda 创建的主题 » Python——从列表中获取最大年龄。文件

这管用!我希望有帮助。如果有任何问题,请告诉我(我必须很快完成这项工作,因为我很忙,但我今天晚些时候会回来改进这项工作,并添加额外的解释)。

这种方法基本上假定 Hobby 里面没有数字。

import csv

max_age = 0
with open("iv.txt", encoding = "utf8") as f:
    spamreader = csv.reader(f, delimiter=',')
    # skip first row
    next(spamreader)
    for row in spamreader:
        for i in reversed(row):
            try:
                i = int(i)
                break
            except ValueError:
                pass
        print(i)
        if i > max_age:
            max_age = i

print(f"\nMax age from file: {max_age}")

输出:

18
17
20

Max age from file: 20
3 年前
回复了 oda 创建的主题 » 如何在python中使用“removeIf”?[重复]

python list 对象没有与具有相同功能的内置方法 removeif 在爪哇。

只使用Python代码/内置程序的最佳选择可能是

my_list = [3, 8, 2, 9] 
my_list = [elem for elem in my_list if elem > 5] 

我知道这并不能解决你对速度的担忧。但是,如果您想使用Python 列表 不需要编写C代码来构造 移除 方法 列表 对象(或变体),这是不可能的。

在…上 numpy (主要用C写)你可以

import numpy as np 

a = np.array([3, 8, 2, 9])
a = a[(a > 5)] 

我发现对大型数组/列表的理解速度明显快于对Python列表的理解(注:希望添加更多)。