python - 转置列表列表 - 空输出,python
问题描述
我正在尝试转置我制作的列表列表。我通过将列表彼此附加来制作列表列表:我有四个列表,每个列表十个项目。
这是我的清单。
[['Bin1', 'Bin2', 'Bin3', 'Bin4', 'Bin5', 'Bin6', 'Bin7', 'Bin8', 'Bin9', 'Bin10'], ['TTF is greater than or equal to 50.0,', 'TTF is greater than or equal to 88.0,', 'TTF is greater than or equal to 126.0,', 'TTF is greater than or equal to 164.0,', 'TTF is greater than or equal to 202.0,', 'TTF is greater than or equal to 240.0,', 'TTF is greater than or equal to 278.0,', 'TTF is greater than or equal to 316.0,', 'TTF is greater than or equal to 354.0,'], ['less than 88.0:', 'less than 126.0:', 'less than 164.0:', 'less than 202.0:', 'less than 240.0:', 'less than 278.0:', 'less than 316.0:', 'less than 354.0:', 'less than or equal to 430.0:'], [17, 29, 25, 9, 8, 3, 4, 1, 2, 2]]
我使用此代码尝试转置列表列表,但它不起作用。
def transpose(lst):
newlist = []
i = 0
while i < len(lst):
j = 0
colvec = []
while j < len(lst):
colvec.append(lst[j][i])
j = j + 1
newlist.append(colvec)
i = i + 1
return newlist
此代码仅返回一对空括号[]
。我究竟做错了什么?
解决方案
简单的解决方案:
def transpose(a):
r = len(a)
c = len(a[0])
print(r,c)
b = []
for i in range(c):
b.append([0]*r)
for i in range(r):
for j in range(c):
b[j][i] = a[i][j]
print(b)
我建议使用numpy.ndarray.T:
import numpy as np
a = np.array([[5, 4],[1, 2]])
print(a)
print(a.T)
输出:
[[5 4]
[1 2]]
[[5 1]
[4 2]]
推荐阅读
- ruby-on-rails - 有没有办法在 Rails 应用程序中使用 GraphQL 和 Elasticsearch?
- rest - REST API PATCH 请求预期行为
- r - 使用 nls 跳过数据表计算中的错误
- python - 如何使用python将csv数据输出到终端
- android - 有没有办法检查我当前连接的 wifi 是否与以前连接的 wifi 不同?
- sh - 如何使用 sh 脚本对 crontab 作业进行哈希处理
- angular - Cannot properly set RequestOptionsArgs of POST, in service
- google-cloud-platform - 将近线存储转换为区域存储然后定期返回的成本是多少?
- mysql - MySQL查询列出不在另一个表中的用户
- caching - Drupal 8, Browser language detection fails after some time (anonymous users)