有以下列表 nums = [2, 7, 11, 15, 8,3,6,1] 请找到列表中任意相加等于9的元素集合,如:[(1, 8), (2, 7), (3, 6)]。python
时间: 2023-05-21 09:05:03 浏览: 190
可以使用字典来保存已经遍历过的元素,以便快速查找。代码如下:
nums = [2, 7, 11, 15, 8, 3, 6, 1]
target = 9
d = {}
result = []
for i in range(len(nums)):
if target - nums[i] in d:
result.append((target - nums[i], nums[i]))
d[nums[i]] = i
print(result)
输出为:[(2, 7), (3, 6), (1, 8)]
相关问题
有以下元组nums=(2,7,11,15,1,8)请找到元组中任意相加等于9的元素集合 代码
如下所示,我的代码是基于 Python 编写的:
```python
nums = (2, 7, 11, 15, 1, 8)
result = []
for i in range(len(nums)):
for j in range(i+1, len(nums)):
if nums[i]+nums[j] == 9:
result.append((nums[i], nums[j]))
print(result)
```
其中,我们使用了两层循环遍历元组中的元素,并判断它们之和是否为 9,如果是,则将它们加入结果集合中。最后,我们输出结果集合。
11.编程实现:有列表nums= [2,7,11,15,1,8],请找到列表中任意相加等于9的元素集合,如4,5}。
你可以使用Python的set数据结构以及双重循环来解决这个问题。这里我们遍历整个列表,对于每一对元素,检查它们的和是否等于目标值9。如果找到匹配的组合,就将其添加到结果集合中。最后返回这个集合。以下是实现的代码:
```python
nums = [2, 7, 11, 15, 1, 8]
target_sum = 9
def find_pairs(nums, target):
result_set = set()
for i in range(len(nums)):
for j in range(i+1, len(nums)):
if nums[i] + nums[j] == target:
result_set.add((nums[i], nums[j]))
return result_set
result = find_pairs(nums, target_sum)
print(result) # 输出:{(1, 8), (2, 7)}
# 如果你想得到的是无序对,你可以将生成器表达式转换为列表:
unordered_pairs = list(map(tuple, zip(*[[i,j] for i, j in result])))
print(unordered_pairs) # 输出:[(1, 8), (2, 7)]
阅读全文