作者:你走以后_心若逝世灰决_677 | 来源:互联网 | 2023-02-12 12:21
不确定我的标题是否足够清晰.我有以下列表:
[u'394', u'132.2k', u'6.8k', u'1', u'100', u'457', u'3.5k', u'3.5k', u'184', u'507', u'57']
我想循环遍历此列表,删除所有K,并在删除它们时将元素乘以1000.所以我想我需要在将它们相乘之前将每个字符串转换为整数.
我尝试了各种配方,但我有点失落.这是我到目前为止所做的事情:
for item in stringlist:
if 'k' in item:
finallist.append(item)
但这根本不起作用,因为它返回了一个k
没有任何数字的列表.我也尝试使用replace
但无法使其工作.
我知道将字符串转换为整数很容易,但这不是我的主要问题......
1> asongtoruin..:
试试这个:
start_list = [u'394', u'132.2k', u'6.8k', u'1', u'100', u'457', u'3.5k', u'3.5k', u'184', u'507', u'57']
end_list = [int(1000*float(x.replace('k', ''))) if 'k' in x else int(x) for x in start_list]
print(end_list)
打印:
[394, 132200, 6800, 1, 100, 457, 3500, 3500, 184, 507, 57]
编辑:我们可以使这个更健壮,如果是空元素,因此(为了易读性而间隔):
start_list = [u'394', u'132.2k', u'6.8k', u'1', u'100', u'457', u'3.5k', u'3.5k', u'184', u'507', u'57', u'.', u'1.2']
end_list = [int(1000*float(x.replace('k', ''))) if 'k' in x
else int(float('0' + x + '0')) if '.' in x
else int(x)
for x in start_list]
print(end_list)
通过'0'
在任何元素的任一侧添加一个.
(但没有k
),我们捕获空的情况u'.'
.请注意,这将舍入十进制值,输出如下:
[394, 132200, 6800, 1, 100, 457, 3500, 3500, 184, 507, 57, 0, 1]
你的清单中是否包含"u"元素.'`?