相关疑难解决方法(0)

如何从列表列表中制作一个平面列表?

我想知道是否有一条快捷方式可以在Python列表中列出一个简单的列表.

我可以在for循环中做到这一点,但也许有一些很酷的"单行"?我用reduce尝试了,但是我收到了一个错误.

l = [[1, 2, 3], [4, 5, 6], [7], [8, 9]]
reduce(lambda x, y: x.extend(y), l)
Run Code Online (Sandbox Code Playgroud)

错误信息

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 1, in <lambda>
AttributeError: 'NoneType' object has no attribute 'extend'
Run Code Online (Sandbox Code Playgroud)

python list flatten multidimensional-array

2950
推荐指数
29
解决办法
184万
查看次数

如何在不修改任何一个列表的情况下获取Python中两个列表的串联?

在Python中,我可以找到连接两个列表的唯一方法是list.extend修改第一个列表.是否有任何串联函数返回其结果而不修改其参数?

python concatenation sequence list-manipulation

636
推荐指数
7
解决办法
85万
查看次数

Python:获取列表的内容并将其附加到另一个列表中

我试图理解是否有必要获取列表的内容并将其附加到另一个列表.

我通过循环函数创建了第一个列表,它将从文件中获取特定行并将它们保存在列表中.

然后使用第二个列表来保存这些行,并在另一个文件上开始一个新的循环.

我的想法是在for循环完成后获取列表,将其转储到第二个列表中,然后开始一个新的循环,将第一个列表的内容再次转储到第二个列表中但附加它,所以第二个列表将是在我的循环中创建的所有较小列表文件的总和.只有满足某些条件时才必须附加该列表.

它看起来像这样的东西:

# This is done for each log in my directory, i have a loop running
for logs in mydir:

    for line in mylog:
        #...if the conditions are met
        list1.append(line)

    for item in list1:
        if "string" in item: #if somewhere in the list1 i have a match for a string
            list2.append(list1) # append every line in list1 to list2
            del list1 [:] # delete the content of the list1
            break
        else:
            del list1 [:] # delete …
Run Code Online (Sandbox Code Playgroud)

python list

179
推荐指数
6
解决办法
19万
查看次数

为什么`如果没有.__ eq __("a")`评估为真?

如果你在Python 3.7中执行以下语句,它将(从我的测试)打印b:

if None.__eq__("a"):
    print("b")
Run Code Online (Sandbox Code Playgroud)

但是,None.__eq__("a")评估为NotImplemented.

当然,"a".__eq__("a")评估True"b".__eq__("a")评估False.

我最初在测试函数的返回值时发现了这个,但在第二种情况下没有返回任何内容 - 因此,函数返回了None.

这里发生了什么?

python string boolean-expression equivalence python-3.x

145
推荐指数
3
解决办法
4652
查看次数

在Python中为列表保留内存?

在使用Python编程时,是否可以为将填充已知数量的项目的列表保留内存,以便在构建列表时不会多次重新分配列表?我查看了文档中的Python列表类型,但没有找到任何似乎这样做的东西.但是,这种类型的列表构建显示在我的代码的几个热点中,所以我想尽可能高效.

编辑:另外,用像Python这样的语言做这样的事情是否有意义?我是一个相当有经验的程序员,但是对Python很陌生并且仍然对它的做事方式有所了解.Python是否在内部将所有对象分配到单独的堆空间中,从而无法尝试最小化分配,或者是直接存储在列表中的诸如整数,浮点数等原语?

python arrays performance memory-management list

44
推荐指数
4
解决办法
3万
查看次数

使用Apache Spark将键值对减少为键列表对

我正在编写一个Spark应用程序,并希望将一组键值对组合(K, V1), (K, V2), ..., (K, Vn)成一个Key-Multivalue对(K, [V1, V2, ..., Vn]).我觉得我应该能够使用reduceByKey具有某种风味的功能来做到这一点:

My_KMV = My_KV.reduce(lambda a, b: a.append([b]))
Run Code Online (Sandbox Code Playgroud)

发生这种情况时我得到的错误是:

'NoneType'对象没有attribue'追加'.

我的键是整数,值V1,...,Vn是元组.我的目标是使用密钥和值列表(元组)创建一对.

python mapreduce apache-spark rdd pyspark

42
推荐指数
4
解决办法
8万
查看次数

在python中合并两个列表的最快方法是什么?

鉴于,

list_1 = [1,2,3,4]
list_2 = [5,6,7,8]
Run Code Online (Sandbox Code Playgroud)

在python中实现以下功能的最快方法是什么?

list = [1,2,3,4,5,6,7,8]
Run Code Online (Sandbox Code Playgroud)

请注意,可以有很多方法在python中合并两个列表.我正在寻找最有效率的方式.

[编辑] ++++++++++++++++++++++++++++++++++++++++++++ [编辑]

感谢所有的答案.得到你的想法,我尝试了以下,这是我的理解.

import time

c = list(range(1,10000000))
c_n = list(range(10000000, 20000000))

start = time.time()
c = c+c_n
print len(c)
print time.time() - start

c = list(range(1,10000000))
start = time.time()
for i in c_n:
    c.append(i)
print len(c)
print time.time() - start

c = list(range(1,10000000))
start = time.time()
c.extend(c_n)
print len(c)
print time.time() - start
Run Code Online (Sandbox Code Playgroud)

OUTPUT

19999999
0.125061035156
19999999
1.02858018875
19999999
0.03928399086
Run Code Online (Sandbox Code Playgroud)

所以,如果有人不打算在问题中重复使用list_1/list_2,那么延伸就是要走的路.另一方面, …

python performance merge list

22
推荐指数
4
解决办法
5万
查看次数

将元组列表转换为简单的平面列表

可能重复:
如何使用列表推导将元组元组转换为一维列表?

假设我有以下元组列表:

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

我试图将它转换为一个简单的列表,如下所示:

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

如何将其转换为如上所示的简单列表,而不必遍历每个元素并将项目逐个添加到另一个列表?

有没有快速有效的方法来实现这一点,而不是实际迭代原始的元组列表,还是有一些内置的函数/方法来做到这一点?

python

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

如何传播python数组

在JS我可以做到这一点

const a = [1,2,3,4]
const b = [10, ...a]
console.log(b) // [10,1,2,3,4]
Run Code Online (Sandbox Code Playgroud)

在python中有类似的方法吗?

python

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

13
推荐指数
4
解决办法
2万
查看次数