相关疑难解决方法(0)

2149
推荐指数
17
解决办法
65万
查看次数

列表理解与地图

是否有理由更喜欢使用map()超过列表理解,反之亦然?它们中的任何一个通常比另一个更有效或被认为是更加pythonic?

python list-comprehension map-function

680
推荐指数
8
解决办法
19万
查看次数

转置/解压缩功能(zip的反转)?

我有一个2项元组的列表,我想将它们转换为2个列表,其中第一个包含每个元组中的第一个项目,第二个列表包含第二个项目.

例如:

original = [('a', 1), ('b', 2), ('c', 3), ('d', 4)]
# and I want to become...
result = (['a', 'b', 'c', 'd'], [1, 2, 3, 4])
Run Code Online (Sandbox Code Playgroud)

是否有内置函数可以做到这一点?

python transpose list matrix

480
推荐指数
6
解决办法
15万
查看次数

将一个列表的每个元素压缩在一起

从字符串列表开始.每个字符串将具有相同数量的字符,但该数字不是预定的,也不是不相关的字符串总数.

这是一个例子:

data = ['ABC', 'EFG', 'IJK', 'MNO']
Run Code Online (Sandbox Code Playgroud)

我想要的最终输出是这样的:

[('A', 'E', 'I', 'M'), ('B', 'F', 'J', 'N'), ('C', 'G', 'K', 'O')]
Run Code Online (Sandbox Code Playgroud)

我想要的输出是我在以zip()某种方式使用后期望看到的.我的问题是我找不到将一个数组的每个元素压缩在一起的正确方法.

基本上,我试图从一组行中获取列.

到目前为止我尝试了什么:

  1. 将数据拆分为二维列表:

    split_data = [list(row) for row in rows]

这给了我:

[['A', 'B', 'C'], ['E', 'F', 'G'], ['I', 'J', 'K'], ['M', 'N', 'O']]
Run Code Online (Sandbox Code Playgroud)
  1. 尝试使用以下zip()内容:

    zip(split_data)

我继续这样做:

[(['A', 'B', 'C'],), (['E', 'F', 'G'],), (['I', 'J', 'K'],), (['M', 'N', 'O'],)]
Run Code Online (Sandbox Code Playgroud)

显然,它没有任何东西压缩每个元素,导致它返回带有空白的原始数据.我怎样才能zip()考虑应该压缩的每个元素datasplit_data列表?

我需要的是 zip(data[0], data[1], data[2], ...)

python

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

在C++ Range-v3库中解压缩

是否可以使用C++ Range-v3库解压缩先前压缩的向量?我希望它的行为类似于Haskell的解压缩函数或Python的zip(*list).

例如,当按照另一个向量的值对向量进行排序时,这将是方便的:

using namespace ranges;

std::vector<std::string> names {"john", "bob", "alice"};
std::vector<int>         ages  {32,     19,    35};

// zip names and ages
auto zipped = view::zip(names, ages);
// sort the zip by age
sort(zipped, [](auto &&a, auto &&b) {
  return std::get<1>(a) < std::get<1>(b);
});
// put the sorted names back into the original vector
std::tie(names, std::ignore) = unzip(zipped);
Run Code Online (Sandbox Code Playgroud)

sorting c++11 boost-range range-v3

4
推荐指数
1
解决办法
1264
查看次数

python3解压缩元组列表

在python2.7中,下面的代码获取字典fd(在此示例中表示单词及其计数的频率分布),并将其分为两个列表的列表:[[keys],[values]]:

sortedDKandVs = [zip(*sorted(fd.items(), key=itemgetter(1), reverse=True))] #[word,word,...],[count,count]
Run Code Online (Sandbox Code Playgroud)

我可以做,例如:

keys = sortedDKandVs[0]
values = sortedDKandVs[1]
Run Code Online (Sandbox Code Playgroud)

这不再适用于Python3,我想知道如何转换代码.

这里没有答案如何将元组列表解压缩到单个列表中?因为在Python3中,zip对象返回迭代器而不是列表,但是我不知道如何转换答案.

python-3.x

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

2个清单列表.根据列表的列表对两者进行排序

我有两个清单:

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

列表X和Y的元素之间存在一对一的对应关系.我想按项目的长度对X的元素进行排序,同时Y的项目按照新的索引排序在正确的位置. X的项目.

结果应该是:

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

python sorting

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

如果两个列表位于同一个对象中,我可以用一个循环实例化它们吗?

如果我有两个空列表,并且我想用同一对象中的所有“a”和“b”填充它们,我可以做一些类似的事情:

a, b = [foo.a, foo.b for foo in foo]

因为目前我将它们分成两个单独的列表理解。

a = [foo.a for foo in foo]

b = [foo.b for foo in foo]

所以我想知道是否可以以某种方式将它们合并为一行和一个论点。

python

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