相关疑难解决方法(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中展平浅层列表

是否有一种简单的方法可以使用列表推导来展平迭代列表,或者失败,你会认为什么是平衡这样的浅层列表,平衡性能和可读性的最佳方法?

我尝试使用嵌套列表理解来压缩这样的列表,如下所示:

[image for image in menuitem for menuitem in list_of_menuitems]
Run Code Online (Sandbox Code Playgroud)

但我在NameError那里遇到麻烦,因为name 'menuitem' is not defined.谷歌搜索并浏览Stack Overflow后,我得到了一个reduce声明所需的结果:

reduce(list.__add__, map(lambda x: list(x), list_of_menuitems))
Run Code Online (Sandbox Code Playgroud)

但是这个方法相当难以理解,因为我需要那个list(x)调用,因为x是一个Django QuerySet对象.

结论:

感谢所有为此问题做出贡献的人.以下是我学到的内容摘要.我也将其作为社区维基,以防其他人想要添加或更正这些观察结果.

我原来的reduce语句是多余的,用这种方式编写得更好:

>>> reduce(list.__add__, (list(mi) for mi in list_of_menuitems))
Run Code Online (Sandbox Code Playgroud)

这是嵌套列表理解的正确语法(Brilliant summary dF!):

>>> [image for mi in list_of_menuitems for image in mi]
Run Code Online (Sandbox Code Playgroud)

但这些方法都不如使用效率高itertools.chain:

>>> from itertools import chain
>>> list(chain(*list_of_menuitems))
Run Code Online (Sandbox Code Playgroud)

正如@cdleary指出的那样,通过使用chain.from_iterable如下所示来避免*操作符魔术可能是更好的风格:

>>> chain = itertools.chain.from_iterable([[1,2],[3],[5,89],[],[6]])
>>> print(list(chain))
>>> [1, 2, …
Run Code Online (Sandbox Code Playgroud)

python list-comprehension

382
推荐指数
10
解决办法
17万
查看次数

如何从nltk WordNet Python中获取同义词

WordNet很棒,但我很难在nltk中获取同义词.如果您在此处搜索类似于"小"的单词,则会显示所有同义词.

基本上我只需要知道以下内容: wn.synsets('word')[i].option()where选项可以是上位词和反义词,但获取同义词的选项是什么?

python nltk wordnet

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

如何取消批处理 Tensorflow 2.0 数据集

我有一个使用以下代码创建的数据集tf.data.Dataset

dataset = Dataset.from_tensor_slices(corona_new)
dataset = dataset.window(WINDOW_SIZE, 1, drop_remainder=True)
dataset = dataset.flat_map(lambda x: x.batch(WINDOW_SIZE))
dataset = dataset.map(lambda x: tf.transpose(x))

for i in dataset:
    print(i.numpy())
    break
Run Code Online (Sandbox Code Playgroud)

当我运行它时,我得到以下输出(这是一批的示例):

[[  0. 125. 111. 232. 164. 134. 235. 190.] 
 [  0.  14.  16.   7.   9.   7.   6.   8.]
 [  0. 132. 199. 158. 148. 141. 179. 174.]
 [  0.   0.   0.   2.   0.   2.   1.   2.]
 [  0.   0.   0.   0.   3.   5.   0.   0.]]
Run Code Online (Sandbox Code Playgroud)

我怎样才能取消它们?

python machine-learning keras tensorflow tensorflow-datasets

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

如何进行嵌套列表理解?

我有一个二维列表:

prices = [[0.11, 0.25, 0.37],
          [0.40, 0.72, 0.21],
          [0.03, 0.56, 0.23], ]
Run Code Online (Sandbox Code Playgroud)

我想将每行中每个项目的内容清空到一个列表中。我可以使用嵌套的 for 循环轻松地做到这一点:

for row in prices:
    for item in row:
        result.append(item)
print(result)
Run Code Online (Sandbox Code Playgroud)

不过我想在内联 for 循环中执行此操作。起初我尝试了这个:

print([[item for item in row] for row in prices])
Run Code Online (Sandbox Code Playgroud)

然而,这只返回完全相同的列表(价格)。我也尝试过这个:

print([[[x for x in item] for item in row] for row in prices])
Run Code Online (Sandbox Code Playgroud)

但这会返回一个错误,因为它尝试迭代列表内的浮点数。有没有办法做到这一点?

python

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