鱼C论坛

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

python查询输出两个列表中整数部分相同的元素

[复制链接]
发表于 2022-11-24 19:57:05 | 显示全部楼层 |阅读模式

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

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

x
list1 = [4.18, 6.03, 37.27]
list2 = [4.16, 6.12, 39.28]


问题:如何使用python查询并输出两个列表中整数部分相同的元素

输出结果为

list3 = [4.16, 4.18, 6.03, 6.12]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2022-11-24 20:11:48 | 显示全部楼层
我来写一写
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2022-11-24 20:12:14 | 显示全部楼层

回帖奖励 +2 鱼币

如果数据不大可以直接枚举
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2022-11-24 20:17:18 | 显示全部楼层
本帖最后由 cflying 于 2022-11-24 20:28 编辑

取每一个整数位,然后形成一个临时集合,然后两个集合&得出相同的数字,然后再用这个数字从列表中取数形成新的列表3
再不济循环里套循环也行嘛
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2022-11-24 20:23:25 | 显示全部楼层
       我抛砖引玉
  1. list1 = [4.18, 6.03, 37.27]
  2. list2 = [4.16, 6.12, 39.28]
  3. list3 = []
  4. for x in list1 :
  5.     for y in list2 :
  6.         if int(x) == int(y) : list3 . extend([x , y])
  7. print(list3)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2022-11-24 20:25:20 | 显示全部楼层
  1. list3 = [x for x in list1  if int(x) in [int(i) for i in list2] ] + [x for x in list2  if int(x) in [int(i) for i in list1] ]
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2022-11-24 20:26:37 | 显示全部楼层

回帖奖励 +2 鱼币

学习~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2022-11-24 20:37:14 | 显示全部楼层
我就当做一次课后题了
  1. list1 = [4.18, 6.03, 37.27]
  2. list2 = [4.16, 6.12, 39.28]
  3. list3=list1+list2
  4. list4=list(map(int,list3))
  5. list5=[]
  6. for i in range(len(list4)):
  7.     if list4.count(list4[i])>1:
  8.         list5[len(list5):]=[list3[i]]
  9. print(sorted(list5))
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2022-11-24 20:37:34 | 显示全部楼层
  1. for x in list1:
  2.     if x in list2:
  3.         list3.append(x)
复制代码


循环模板 ↑
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2022-11-24 20:39:01 | 显示全部楼层
本帖最后由 ZhKQYu 于 2022-11-24 20:41 编辑
  1. list1 = [4.18, 6.03, 37.27]
  2. list2 = [4.16, 6.12, 39.28]
  3. dic = {}
  4. for each in list1 + list2:
  5.     if dic.get(int(each)) == None:
  6.         dic[int(each)] = []
  7.     dic[int(each)].append(each)
  8. list3 = [elem for each in dic.values() if len(each) > 1 for elem in each]
  9. print(list3)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2022-11-24 20:41:18 | 显示全部楼层
看了看楼里的回答,惭愧哈哈哈哈
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2022-11-24 20:53:12 | 显示全部楼层

回帖奖励 +2 鱼币

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2022-11-24 21:12:14 | 显示全部楼层
用嵌套循环遍历第一个数组,判断是否在第二个数组里也有,将相同的添加到第三个数组里面,最后输出
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2022-11-24 21:31:49 | 显示全部楼层
x=list(input(""))
y=list(input(""))
z=[]
for a in x:
        for b in y:
                if a==b:
                        z.append(a)
print(z)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2022-11-24 23:39:09 | 显示全部楼层
本帖最后由 阿奇_o 于 2022-11-24 23:40 编辑

假设 只是位置一对一的比较判断,那用 zip() 最方便了,再加上 列表推导式,以及 "二维展开变一维"的小trick, 一行代码即可:
  1. sorted(sum( [list(i) for i in zip(list1, list2) if int(i[0])==int(i[1])], []))
  2. [4.16, 4.18, 6.03, 6.12]
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2022-11-25 11:21:16 | 显示全部楼层
一个简单题目看出与大佬的差距
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2022-12-5 09:49

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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