鱼C论坛

 找回密码
 立即注册
查看: 1111|回复: 13

双重遍历将结果存储到列表中

[复制链接]
发表于 2022-5-8 17:27:35 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
我是先将Excel中的数据导入到pyqt5的textEdit中,然后获取textEdit中的数据,数据如下:
41.246  51.405  61.411  67.356  70.777  72.594  73.182  72.839  71.804  70.421  68.808  67.275  65.717  64.148  62.786  
41.706  52.227  61.794  66.676  68.981  69.638  68.968  67.278  64.929  62.261  59.461  56.894  54.543  52.353  50.427  
40.459  50.125  58.268  61.953  63.294  63.056  61.502  58.955  55.846  52.577  49.329  46.473  43.933  41.683  39.719
38.596  47.184  53.972  56.745  57.475  56.683  54.625  51.665  48.274  44.862  41.628  38.862  36.437  34.353  32.569
36.774  44.636  50.223  52.259  52.406  51.112  48.714  45.546  42.012  38.543  35.356  32.688  30.364  28.402  26.704
35.218  42.056  46.643  48.017  47.727  46.141  43.581  40.316  36.780  33.347  30.279  27.732  25.546  23.719  22.128  
33.284  39.318  43.111  44.095  43.558  41.786  39.132  35.862  32.379  29.112  26.194  23.779  21.733  20.041  18.571  
31.090  36.632  39.720  40.371  39.591  37.704  35.039  31.814  28.431  25.306  22.550  20.290  18.375  16.804  15.443  
现在我需要循环读取上面的数据,因为textEdit中的数据是str类型的,所以我先循环读取每行的数据,将每行的数据保存到一个列表中。代码如下:
            for i in range(reflect_rows):
                List = list[i]
                list_change = List.split('  ')
获取的结果如下
['41.246', '51.405', '61.411', '67.356', '70.777', '72.594', '73.182', '72.839', '71.804', '70.421', '68.808', '67.275', '65.717', '64.148', '62.786']
['41.706', '52.227', '61.794', '66.676', '68.981', '69.638', '68.968', '67.278', '64.929', '62.261', '59.461', '56.894', '54.543', '52.353', '50.427']
['40.459', '50.125', '58.268', '61.953', '63.294', '63.056', '61.502', '58.955', '55.846', '52.577', '49.329', '46.473', '43.933', '41.683', '39.719']
['38.596', '47.184', '53.972', '56.745', '57.475', '56.683', '54.625', '51.665', '48.274', '44.862', '41.628', '38.862', '36.437', '34.353', '32.569']
['36.774', '44.636', '50.223', '52.259', '52.406', '51.112', '48.714', '45.546', '42.012', '38.543', '35.356', '32.688', '30.364', '28.402', '26.704']
['35.218', '42.056', '46.643', '48.017', '47.727', '46.141', '43.581', '40.316', '36.780', '33.347', '30.279', '27.732', '25.546', '23.719', '22.128']
['33.284', '39.318', '43.111', '44.095', '43.558', '41.786', '39.132', '35.862', '32.379', '29.112', '26.194', '23.779', '21.733', '20.041', '18.571']
['31.090', '36.632', '39.720', '40.371', '39.591', '37.704', '35.039', '31.814', '28.431', '25.306', '22.550', '20.290', '18.375', '16.804', '15.443',]
但是现在我还需要将每个数字再除以100,然后保存到列表中,我的想法是使用双重循环遍历每个列表中的每个元素,然后将每个数据除以100,然后再将结果保存到列表中
但是我在使用append将结果添加到列表中时发现添加的数据与我想要的不一样。
我想要的数据是在原数据的基础上除以100,还能保存成上面这样的列表,方便后面的计算使用。
希望大佬们能给提点建议,应该怎么弄,谢谢了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-5-8 17:49:30 | 显示全部楼层

不懂有没理解错,把你的 for 循环改成这样试试:
temp = []
for i in range(reflect_rows):
    List = list[i]
    list_change = List.split()
    temp.append(list(map(float, list_change)))

result = []
for i in temp:
    result.append([j/100 for j in i])

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-5-8 22:17:18 | 显示全部楼层
Twilight6 发表于 2022-5-8 17:49
不懂有没理解错,把你的 for 循环改成这样试试:

temp.append(list(map(float, list_change)))这句话运行不成功
前面这句list_change = List.split('  ')的结果是list类型,list(map(float, list_change))运行后不显示结果
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-5-8 22:19:43 | 显示全部楼层
Yangyubin 发表于 2022-5-8 22:17
temp.append(list(map(float, list_change)))这句话运行不成功
前面这句list_change = List.split('  ') ...


运行不成功是什么意思,如果有报错就发完整报错内容吧~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-5-8 22:30:46 | 显示全部楼层
Twilight6 发表于 2022-5-8 22:19
运行不成功是什么意思,如果有报错就发完整报错内容吧~

我写的页面,运行直接退出来
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-5-8 22:33:06 | 显示全部楼层
Yangyubin 发表于 2022-5-8 22:30
我写的页面,运行直接退出来

我运行完这几行代码在控制台上输出的是
for i in range(reflect_rows):
                List = list[i]
                #print(List)
                #print(type(List))
                list_change = List.split('  ')
                print(list_change)
                print(type(list_change))
结果是:
['41.246', '51.405', '61.411', '67.356', '70.777', '72.594', '73.182', '72.839', '71.804', '70.421', '68.808', '67.275', '65.717', '64.148', '62.786', '61.752', '61.207']
<class 'list'>
是不是因为这两个字符'41.246', '51.405'中间有个空格的原因?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-5-8 22:35:57 | 显示全部楼层
Yangyubin 发表于 2022-5-8 22:30
我写的页面,运行直接退出来


最少要知道是什么问题报错吧,不然怎么解决问题...

你这里数据拿来测试感觉没啥问题:
List = "41.246  51.405  61.411  67.356  70.777  72.594  73.182  72.839  71.804  70.421  68.808  67.275  65.717  64.148  62.786"
temp = []
list_change = List.split()
temp.append(list(map(float, list_change)))

result = []
for i in temp:
    result.append([j/100 for j in i])

print(result)


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-5-8 22:38:43 | 显示全部楼层
Yangyubin 发表于 2022-5-8 22:33
我运行完这几行代码在控制台上输出的是
for i in range(reflect_rows):
                List = list
...


你的代码明显是不需要空字符串的,所以直接  split() 即可,不需要你传入空格来切割

split 默认切割就是以空格来切割,而且默认会丢弃空字符串,而你显式的填入 split(" ") 空字符串将不会丢弃
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-5-8 22:49:14 | 显示全部楼层
Twilight6 发表于 2022-5-8 22:38
你的代码明显是不需要空字符串的,所以直接  split() 即可,不需要你传入空格来切割

split 默认切割 ...

好的,那个地方我修改一下。但是这个list_change的结果是['41.246', '51.405', '61.411', '67.356', '70.777', '72.594', '73.182', '72.839', '71.804', '70.421', '68.808', '67.275'],是list类型,能使用temp.append(list(map(float, list_change)))这句话吗?
我也不知道那地方报错,就是程序运行到这句话,界面就自动退出了,然后控制台也没输出
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-5-8 22:52:37 | 显示全部楼层
Yangyubin 发表于 2022-5-8 22:49
好的,那个地方我修改一下。但是这个list_change的结果是['41.246', '51.405', '61.411', '67.356', '70. ...



list(map(float, list_change)) 就是返回将列表中所有元素都转为 float 浮点型了

然后你就可以进行你的计算了,在将你的计算存到你自己的表中,如何实现这你应该会改吧

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-5-8 22:56:01 | 显示全部楼层
Twilight6 发表于 2022-5-8 22:52
list(map(float, list_change)) 就是返回将列表中所有元素都转为 float 浮点型了

然后你就可以进 ...

好的,我再看下是那地方出问题了,谢谢你了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-5-8 23:00:10 | 显示全部楼层
Yangyubin 发表于 2022-5-8 22:56
好的,我再看下是那地方出问题了,谢谢你了



没事

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-5-9 09:50:18 | 显示全部楼层

我查找了一下错误的原因,是因为我的list_change的结果是['41.246', '51.405', '61.411', '67.356', '70.777', '72.594', '73.182', '72.839', '71.804'],他是list类型,如果使用temp.append(list(map(float, list)))这句话会报TypeError: 'type' object is not iterable这个错误,说是“type”对象不可编辑
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-5-9 11:56:21 | 显示全部楼层
Yangyubin 发表于 2022-5-9 09:50
我查找了一下错误的原因,是因为我的list_change的结果是['41.246', '51.405', '61.411', '67.356', '70. ...



list 别当变量名,改其他的

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-18 10:35

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表