怎么给列表里的每一个数值去除单位
例如 i =['26kg','27kg','28']怎么去除kg单位 循环遍历,替换 本帖最后由 tommyyu 于 2022-10-31 12:45 编辑代码:def out_unit(x, unit = ['kg']):
if type(unit) == type(''):
unit =
unit.sort(key = len, reverse = True)
for i in range(len(x)):
for j in unit:
if x.endswith(j):
x = x[:len(x)-len(j)]
break
return x
print( out_unit(['26kg', '27kg', '28']) ) # 默认去除 kg 单位
print( out_unit(['26km', '27km', '28'], unit = 'km') ) # 去除指定单位
print( out_unit(['26km', '27kg', '28'], unit = ['km', 'kg']) ) # 去除多个指定单位
运行效果:['26', '27', '28']
['26', '27', '28']
['26', '27', '28'] 本帖最后由 jackz007 于 2022-10-31 12:59 编辑
i = ['26kg','27kg','28']
for k in range(len(i)):
if len(i) > 2 and i[-2 :] == 'kg' : i = i[: -2]
print(i) i = ['26kg','27kg','28']
for k in range(len(i)):
i = i.strip('kg')# 用strip方法去掉两端的单位
print(i) 本帖最后由 阿奇_o 于 2022-10-31 13:56 编辑
我在想,能不能不遍历实现呢?。。实际上不行,但表面上的确可以,比如 {:10_256:}
>>>ls = ['26kg','27kg','28']
>>>','.join(ls).replace('kg', '').split(',') # 表面上的确看不见for循环,哈哈
['26', '27', '28']
ps: 实际应用中,可别用这样的 真·骚操作 啊。。为什么说它"真骚"? 因为它要遍历3次!(join遍历一次,replace遍历一次,split又遍历一次)
而它本来可以遍历一两次的(如 [ i.replace('kg', '') for i in ls ]){:10_250:} jackz007 发表于 2022-10-31 12:58
请问’kg‘后面的:是啥意思 至尊python法师 发表于 2022-10-31 14:18
请问’kg‘后面的:是啥意思
看懂了{:10_266:} 本帖最后由 jackz007 于 2022-10-31 15:39 编辑
至尊python法师 发表于 2022-10-31 14:18
请问’kg‘后面的:是啥意思
就是每一个 if、for、while 等后面都有的那个冒号。 本帖最后由 cflying 于 2022-10-31 18:59 编辑
这个么,用replace是一个意思,先转成str,再替换,然后再转列表,省去遍历
import re
i =['26kg','27kg','28']
a=re.sub('','',str(i))
print(eval(a)) 阿奇_o 发表于 2022-10-31 13:46
我在想,能不能不遍历实现呢?。。实际上不行,但表面上的确可以,比如
ps: 实际应用中,可 ...
不遍历也可以实现 cflying 发表于 2022-11-1 22:55
不遍历也可以实现
你还是稍微仔细点理解一下我的中文意思,好吧,什么叫"实际上",什么叫"表面上"?
不遍历也可以实现?? 计算机不逐个对比、不逐个检查字符是不是'kg'或正则的,怎么可能进行判断,不能判断,怎么进行处理(不管是用替换还是切片等手段)。。
ps: 倒是未来的量子计算机,或许可以不遍历,因为它可以借助"量子效应" 直接 "匹配到答案"。。这很量子~
本帖最后由 cflying 于 2022-11-2 10:47 编辑
阿奇_o 发表于 2022-11-1 23:27
你还是稍微仔细点理解一下我的中文意思,好吧,什么叫"实际上",什么叫"表面上"?
不遍历也可以实现? ...
{:10_277:}好家伙,只是一个脚本工具,就是不遍历列表方便而已,没必要扯底层概念,还好没整到汇编。。。 cflying 发表于 2022-11-2 10:38
好家伙,只是一个脚本工具,就是不遍历列表方便而已,没必要扯底层概念,还好没整到汇编。。 ...
是呀,本来小事一桩,我本来的回答也是想卖弄一下join和split连用的骚操作。。
可你 为啥@我引用我的回答,然后就说了句"不遍历也可以实现"? 这不就像是 有人到你家门口喊话、挑战你,你不得出去和他battle掰头一下?(况且还是我占理~)
其实你不@我,我早就把这题忘了。。{:10_250:} 本帖最后由 cflying 于 2022-11-2 19:36 编辑
阿奇_o 发表于 2022-11-2 14:05
是呀,本来小事一桩,我本来的回答也是想卖弄一下join和split连用的骚操作。。
可你 为啥@我引用我的回 ...
厉害,厉害 i = if "kg" in each else each for each in i]
页:
[1]