英文:
Is there a way to change the data type of specific elements in a list based on their properties?
问题
让我们假设我有一个浮点数列表list1,其中加粗的部分是整数:
list1 = [1.8, 4.0, 3.2, 12.9, 18.0, 6.0, 7.6, 9.0]
现在,我想创建另一个列表list2,其中只包含list1中的整数部分:
list2 = [4, 18, 6, 9]
到目前为止,我尝试过类似这样的方法:
list1 = [1.8, 4.0, 3.2, 12.9, 18.0, 6.0, 7.6, 9.0]
list2 = filter(lambda item: type(item) == int, list1)
print(list(list2))
然而,代码仍然将整数部分的浮点数视为浮点数而不是整数。
是否有一种方法可以选择性地将列表中的整数部分浮点数转换为整数?
英文:
Let's assume I have a list1 of floats, where the ones in bold are whole numbers:
list1 = [1.8, **4.0**, 3.2, 12.9, **18.0**, **6.0**, 7.6, **9.0**]
I now want to make another list2 of only integers with only the whole number floats from list1:
list2 = [**4, 18, 6, 9**]
So far, I've tried something like this:
list1 = [1.8, 4.0, 3.2, 12.9, 18.0, 6.0, 7.6, 9.0]
list2 = filter(lambda item: type(item) == int, list1)
print(list(list2))
However, the code is still reading the whole number floats as floats rather than integers.
Is there a way to selectively convert the whole number floats into integers in the list?
答案1
得分: 1
你可以尝试:
list1 = [1.8, 4.0, 3.2, 12.9, 18.0, 6.0, 7.6, 9.0]
list2 = [int(x) for x in list1 if x.is_integer()]
#[4, 18, 6, 9]
你也可以这样做:
[int(x) for x in list1 if x % 1 == 0] # 除以1得到的余数为0表示整数
#[4, 18, 6, 9]
英文:
You can try:
list1 = [1.8, 4.0, 3.2, 12.9, 18.0, 6.0, 7.6, 9.0]
list2 = [int(x) for x in list1 if x.is_integer()]
#[4, 18, 6, 9]
You can also do:
[int(x) for x in list1 if x%1 == 0] #division by 1 will give 0 for integers
#[4, 18, 6, 9]
答案2
得分: 0
你可以使用这段代码:
list1 = [1.8, 4.0, 3.2, 12.9, 18.0, 6.0, 7.6, 9.0]
list2 = [int(num) for num in list1 if num == int(num)]
print(list2)
结果:
[4, 18, 6, 9]
英文:
You can use this code :
list1 = [1.8, 4.0, 3.2, 12.9, 18.0, 6.0, 7.6, 9.0]
list2 = [int(num) for num in list1 if num == int(num)]
print(list2)
Result:
[4, 18, 6, 9]
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论