给出一个字符串列表,是否可以将YEAR与其他数字分开,例如
ll = [700, 138.44, 5, 1862, 39.8, 30, 205.0, 30, 98.1, 180, 10, 6, 640, 29, 46.53, 45, 114, 10, 231, 2002, 2002, 176.47, 10]
Python中有没有办法将2002年和1862年与其他数字分开?
谢谢!
具体来说,我想选择任何四位数YEAR,这显然是人眼。并且700是灰色区域,假设我们将其视为正常数字。
答案 0 :(得分:0)
如果您想将年份与该列表分开,假设年份总是4个数字,而年份是列表中唯一的4个数字
ll = [700, 138.44, 5, 1862, 39.8, 30, 205.0, 30, 98.1, 180, 10, 6, 640, 29, 46.53, 45, 114, 10, 231, 2002, 2002, 176.47, 10]
for i in ll:
if len(str(i)) == 4 and str(i).isalnum():
print i
这将打印
1862
2002
2002
你的列表中有2002年两次。如果需要,您可以过滤重复项。 我正在将列表中的项目转换为字符串,以便我可以检查字符串长度。我还要确保所有字符都是数字,以避免打印像98.1这样的数字。它确保不考虑带小数的数字,因为我正在检查字符串长度。
另一种方法是将数字转换为字符串一次而不是两次,这会增加长列表的速度
for i in (str(num) for num in ll):
if len(i) == 4 and i.isalnum():
print i
我正在使用生成器(str(num) for num in ll)
,因此它也具有内存效率。如果你想要一些更容易阅读的东西,你可以这样做。
ll = (str(i) for i in ll)
for i in ll:
if len(i) == 4 and i.isalnum():
print i
答案 1 :(得分:0)
假设"年"是四位数,是一个整数:
def int_len(n):
length = 0
while n > 0:
length += 1
n /= 10
return length
ll = [700, 138.44, 5, 1862, 39.8, 30, 205.0, 30, 98.1, 180, 10, 6, 640, 29, 46.53, 45, 114, 10, 231, 2002, 2002, 176.47, 10]
print [i for i in ll if type(i) == int and int_len(i) == 4]
#OUT: [1862, 2002, 2002]