鱼C论坛

 找回密码
 立即注册
查看: 4265|回复: 15

怎么给列表里的每一个数值去除单位

[复制链接]
发表于 2022-10-31 12:31:40 | 显示全部楼层 |阅读模式

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

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

x
例如 i =['26kg','27kg','28']怎么去除kg单位
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2022-10-31 12:40:52 From FishC Mobile | 显示全部楼层
循环遍历,替换
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-10-31 12:42:05 | 显示全部楼层
本帖最后由 tommyyu 于 2022-10-31 12:45 编辑

代码:
  1. def out_unit(x, unit = ['kg']):
  2.     if type(unit) == type(''):
  3.         unit = [unit]
  4.     unit.sort(key = len, reverse = True)
  5.     for i in range(len(x)):
  6.         for j in unit:
  7.             if x[i].endswith(j):
  8.                 x[i] = x[i][:len(x[i])-len(j)]
  9.                 break
  10.     return x

  11. print( out_unit(['26kg', '27kg', '28']) ) # 默认去除 kg 单位
  12. print( out_unit(['26km', '27km', '28'], unit = 'km') ) # 去除指定单位
  13. print( out_unit(['26km', '27kg', '28'], unit = ['km', 'kg']) ) # 去除多个指定单位
复制代码

运行效果:
  1. ['26', '27', '28']
  2. ['26', '27', '28']
  3. ['26', '27', '28']
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-10-31 12:58:29 | 显示全部楼层
本帖最后由 jackz007 于 2022-10-31 12:59 编辑
  1. i = ['26kg','27kg','28']
  2. for k in range(len(i)):
  3.     if len(i[k]) > 2 and i[k][-2 :] == 'kg' : i[k] = i[k][: -2]
  4. print(i)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-10-31 13:04:21 | 显示全部楼层
  1. i = ['26kg','27kg','28']
  2. for k in range(len(i)):
  3.     i[k] = i[k].strip('kg')  # 用strip方法去掉两端的单位
  4. print(i)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-10-31 13:46:19 | 显示全部楼层
本帖最后由 阿奇_o 于 2022-10-31 13:56 编辑

我在想,能不能不遍历实现呢?。。实际上不行,但表面上的确可以,比如
  1. >>>ls = ['26kg','27kg','28']
  2. >>>','.join(ls).replace('kg', '').split(',')    # 表面上的确看不见for循环,哈哈
  3. ['26', '27', '28']
复制代码

ps: 实际应用中,可别用这样的 真·骚操作 啊。。为什么说它"真骚"? 因为它要遍历3次!(join遍历一次,replace遍历一次,split又遍历一次)
而它本来可以遍历一两次的(如 [ i.replace('kg', '') for i in ls ])
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-10-31 14:18:45 | 显示全部楼层

请问’kg‘后面的:是啥意思
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-10-31 14:20:50 | 显示全部楼层
至尊python法师 发表于 2022-10-31 14:18
请问’kg‘后面的:是啥意思

看懂了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-10-31 15:01:13 From FishC Mobile | 显示全部楼层
本帖最后由 jackz007 于 2022-10-31 15:39 编辑
至尊python法师 发表于 2022-10-31 14:18
请问’kg‘后面的:是啥意思


        就是每一个 if、for、while 等后面都有的那个冒号。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-10-31 18:57:42 | 显示全部楼层
本帖最后由 cflying 于 2022-10-31 18:59 编辑

这个么,用replace是一个意思,先转成str,再替换,然后再转列表,省去遍历
  1. import re
  2. i =['26kg','27kg','28']
  3. a=re.sub('[a-zA-Z]','',str(i))
  4. print(eval(a))
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-11-1 22:55:31 | 显示全部楼层
阿奇_o 发表于 2022-10-31 13:46
我在想,能不能不遍历实现呢?。。实际上不行,但表面上的确可以,比如

ps: 实际应用中,可 ...

不遍历也可以实现
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-11-1 23:27:26 | 显示全部楼层
cflying 发表于 2022-11-1 22:55
不遍历也可以实现

你还是稍微仔细点理解一下我的中文意思,好吧,什么叫"实际上",什么叫"表面上"?

不遍历也可以实现?? 计算机不逐个对比、不逐个检查字符是不是'kg'或正则的[a-zA-z],怎么可能进行判断,不能判断,怎么进行处理(不管是用替换还是切片等手段)。。

ps: 倒是未来的量子计算机,或许可以不遍历,因为它可以借助"量子效应" 直接 "匹配到答案"。。这很量子~
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-11-2 10:38:23 | 显示全部楼层
本帖最后由 cflying 于 2022-11-2 10:47 编辑
阿奇_o 发表于 2022-11-1 23:27
你还是稍微仔细点理解一下我的中文意思,好吧,什么叫"实际上",什么叫"表面上"?

不遍历也可以实现? ...


好家伙,只是一个脚本工具,就是不遍历列表方便而已,没必要扯底层概念,还好没整到汇编。。。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-11-2 14:05:08 | 显示全部楼层
cflying 发表于 2022-11-2 10:38
好家伙,只是一个脚本工具,就是不遍历列表方便而已,没必要扯底层概念,还好没整到汇编。。 ...

是呀,本来小事一桩,我本来的回答也是想卖弄一下join和split连用的骚操作。。
可你 为啥@我引用我的回答,然后就说了句"不遍历也可以实现"? 这不就像是 有人到你家门口喊话、挑战你,你不得出去和他battle掰头一下?(况且还是我占理~)   
其实你不@我,我早就把这题忘了。。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-11-2 19:28:46 | 显示全部楼层
本帖最后由 cflying 于 2022-11-2 19:36 编辑
阿奇_o 发表于 2022-11-2 14:05
是呀,本来小事一桩,我本来的回答也是想卖弄一下join和split连用的骚操作。。
可你 为啥@我引用我的回 ...


厉害,厉害
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-11-2 22:26:14 | 显示全部楼层
i = [each[:-2] if "kg" in each else each for each in i]
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-26 00:19

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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