相关疑难解决方法(0)

星号*在Python中意味着什么?

*在C中具有特殊含义,就像在C中一样吗?我在Python Cookbook中看到了这样的函数:

def get(self, *a, **kw)
Run Code Online (Sandbox Code Playgroud)

您能否向我解释或指出我能在哪里找到答案(Google将*解释为外卡字符,因此我找不到满意的答案).

非常感谢你.

python

295
推荐指数
5
解决办法
17万
查看次数

转置列表清单

让我们来:

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

我正在寻找的结果是

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

并不是

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

非常感激

python transpose list

200
推荐指数
6
解决办法
18万
查看次数

如何在csv表中进行行到列的数据转置?

我是脚本新手.我有一个table(Table1.txt),我需要创建另一个表,其中Table1的行按列排列,反之亦然.我已经为Perl和SQL找到了这个问题的解决方案,但是没有找到Python的解决方案.

我刚刚开始学习Python两天前,所以这是我得到的:

import csv
import sys

with open(sys.argv[1], "rt") as inputfile:
   readinput = csv.reader(inputfile, delimiter='\t')
   with open("output.csv", 'wt') as outputfile:
      writer = csv.writer(outputfile, delimiter="\t")
      for row in readinput:
            values = [row[0], row[1], row[2], row[3]]
            writer.writerow([values])
Run Code Online (Sandbox Code Playgroud)

这只是将列重现为列.我现在想做的是写最后一行,writer.writecol([values])但似乎没有这样的命令,我还没有找到另一种将行写为列的方法.

python csv

29
推荐指数
3
解决办法
9万
查看次数

没有Numpy的矩阵求逆

我想在不使用numpy.linalg.inv的情况下反转矩阵.

原因是我使用Numba加速代码,但是不支持numpy.linalg.inv,所以我想知道我是否可以使用'经典'Python代码反转矩阵.

使用numpy.linalg.inv,示例代码如下所示:

import numpy as np
M = np.array([[1,0,0],[0,1,0],[0,0,1]])
Minv = np.linalg.inv(M)
Run Code Online (Sandbox Code Playgroud)

python matrix inverse numba

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

用于矩阵的python zip()函数

可能重复:
Python中的Matrix Transpose

我说有一个矩阵

A = [[0,0],[1,1]]
Run Code Online (Sandbox Code Playgroud)

我想把它的组件压缩起来

(0,1),(0,1)
Run Code Online (Sandbox Code Playgroud)

在A中有两行,这可以很容易地获得

zip(A[0],A[1])
Run Code Online (Sandbox Code Playgroud)

如果我有任何维度的矩阵A怎么办?

A = [[0,0],[1,1],[2,2]]
Run Code Online (Sandbox Code Playgroud)

如何压缩一系列元素?

谢谢你的想法.

python arrays zip numpy matrix

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

单个python列表理解中的两个赋值

例如:

a = [1,2,3]
x = [2*i for i in a]
y = [3*i for i in a]
Run Code Online (Sandbox Code Playgroud)

如果a的大小很大,将列表推导组合成一个(如果可能的话)会更有效吗?如果是这样,你怎么做?

就像是,

x,y = [2*i, 3*i for i in a]
Run Code Online (Sandbox Code Playgroud)

这不起作用.如果使用列表推导在计算效率上不比使用普通for循环更高效,请告诉我.谢谢.

python list-comprehension

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

我如何简洁地转置嵌套列表?

我正在编写代码来解析配置文件中的tilemap映射.地图格式如下:

1|2|3|4
1|2|3|4
2|3|4|5
Run Code Online (Sandbox Code Playgroud)

数字代表瓷砖.然后我把它变成一个整数数组:

[[int(tile) for tile in row.split("|")] for row in  "1|2|3|4\n1|2|3|4\n2|3|4|5".lstrip("\n").split("\n")]
Run Code Online (Sandbox Code Playgroud)

这会以[row] [column]的格式生成一个数组,但是我希望它像[x] [y]中的[column] [row]一样,所以我不必向后解决它(即[y] [X]).但我想不出任何简洁的方法来攻击这个问题.我曾考虑通过Tiled使用xml语法重新编写格式,但对初学者来说似乎太难了.

提前感谢您的回复.

python

6
推荐指数
1
解决办法
4082
查看次数

如何垂直打印此列表?

假设我有这个星号列表,我说它以这种方式打印:

list = ['* *', '*', '* * *', '* * * * *', '* * * * * *', '* * * *']
for i in list:
    print i
Run Code Online (Sandbox Code Playgroud)

所以在这里,输出是:

* *
*
* * *
* * * * *
* * * * * *
* * * *
Run Code Online (Sandbox Code Playgroud)

但我希望输出是垂直的,如下所示:

* * * * * *
*   * * * *
    * * * *
      * * *
      * * 
        * 
Run Code Online (Sandbox Code Playgroud)

这样做的任何提示?我试图概念化如何使用list comprehension或for-loops这样的东西,但是没有把它弄得很正确.

python ascii-art

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

如何有效地沿对角线翻转numpy数组?

假设我有以下数组(请注意,在 [2,0] 位置有一个 1,在 [3,4] 位置有一个 2):

[0, 0, 0, 0, 0]
[0, 0, 0, 0, 0]
[1, 0, 0, 0, 0]
[0, 0, 0, 0, 2]
[0, 0, 0, 0, 0]
Run Code Online (Sandbox Code Playgroud)

我想有效地沿对角线翻转它,以便:

[0, 0, 1, 0, 0]
[0, 0, 0, 0, 0]
[0, 0, 0, 0, 0]
[0, 0, 0, 0, 0]
[0, 0, 0, 2, 0]
Run Code Online (Sandbox Code Playgroud)

这不适用于 fliplr 或 rot90 或 flipud。想要有效的答案而不仅仅是答案,因为不幸的是,这不是在这么小的矩阵上执行的。

python numpy flip

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

在某些方向打印嵌套列表 - Python

我正在尝试用Python制作图形设计的问题,更具体地说是ASCII"横幅"字.每个字母由字符的嵌套列表组成.

 [[' _______ ', '(       )', '| () () |', '| || || |', '| |(_)| |', '| |   | |', '| )   ( |', '|/     \\|'], [' _______ ', '(  ____ \\', '| (    \\/', '| (__    ', '|  __)   ', '| (      ', '| (____/\\', '(_______/']]
Run Code Online (Sandbox Code Playgroud)

等等

当为每个嵌套列表向下打印并为整个事物打印时,它们会形成一个单词.我正如上面所说的那样打印它时遇到问题,对于每个嵌套列表都是如此.提前致谢!

python

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

矩阵的转置

我试图在python中找到矩阵的转置而不实际使用矩阵的大小.

我需要使用列表推导来为[范围(n)中的i做[[row [i] for row in test]],其中test是一个nxn矩阵而不实际使用n.

python list-comprehension matrix

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

并行地对多个列表进行Pythonic迭代

我想知道一种优雅的Pythonic方法在Python 3 中并行迭代列表(或列表的列表).直到运行时才知道列表的数量,所以我相信我不能简单地将它们作为参数提供到zip()功能.

例如,给定以下数据结构:

var = [['x1' ,'x2' ,'x3'], ['y1', 'y2', 'y3'], ['z1', 'z2', 'z3'], …]

我希望能够在每次迭代时访问以下值:

x1,y1,z1其次是x2,y2,z2其次x3,y3,z3等等.

据推测,我可以直接使用列表索引,或使用itertools.chain来实现这一点,但我正在寻找使用生成器或其他方式的更优雅的方法.

python for-loop data-structures python-3.x

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

将所有行转换为列和列转换为数组中的行

我正在尝试创建这个程序(在python中),它将所有行转换为列,将列转换为行.

更具体地说,第一个输入是2个数字.NM.N- 总行数,M总列数.我用过b=map(int, raw_input().split()).然后基于b[0],每个下一N行将包含M空格分隔的整数.例如:

Input:

3 5
13 4 8 14 1
9 6 3 7 21
5 12 17 9 3  
Run Code Online (Sandbox Code Playgroud)

现在程序将它存储在2D数组中:

arr=[[13, 4, 8, 14, 1], [9, 6, 3, 7, 21], [5, 12, 17, 9, 3]]
Run Code Online (Sandbox Code Playgroud)

输出所需的是打印M行,每行包含N个空格分隔的整数.例如:

Output:

13 9 5
4 6 12
8 3 17
14 7 9
1 21 3
Run Code Online (Sandbox Code Playgroud)

这是我到目前为止所尝试的:

 #Getting N and M from input
 NM=map(int, raw_input().split()) …
Run Code Online (Sandbox Code Playgroud)

python arrays

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