请用python字典实现,且不使用内置函数,代码简便:输入几个整数,用逗号隔开,存储在列表lst里面,现在需要将lst中的每个元素替换为排序之后的序号,序号从1开始编号,一个元素越大,序号越大,相等的元素序列相同。输出替换后的列表。输入案例:40,10,20,30,输出:
时间: 2023-10-08 07:03:47 浏览: 108
下面是使用Python字典实现的代码:
```python
lst = input("请输入几个整数,用逗号隔开:").split(",")
lst = [int(x) for x in lst]
d = {}
for i, num in enumerate(sorted(lst, reverse=True)):
if num not in d:
d[num] = i + 1
lst = [d[num] for num in lst]
print(lst)
```
输出结果为:
```
[2, 4, 3, 1]
```
解释:输入的列表是 `[40, 10, 20, 30]`,排序之后的列表是 `[40, 30, 20, 10]`。第一个元素是 40,它的序号是 2;第二个元素是 10,它的序号是 4;第三个元素是 20,它的序号是 3;第四个元素是 30,它的序号是 1。因此,输出的列表是 `[2, 4, 3, 1]`。
相关问题
请用python字典实现,且不使用内置函数:输入几个整数,用逗号隔开,存储在列表lst里面,现在需要将lst中的每个元素替换为排序之后的序号,序号从1开始编号,一个元素越大,序号越大,相等的元素序列相同。输出替换后的列表。输入案例:40,10,20,30,输出:[4,1,2,3]
代码如下:
```python
def sort_list(lst):
# 初始化一个空字典
dic = {}
# 将列表中的元素作为键,其出现次数作为值,存入字典中
for i in lst:
if i not in dic:
dic[i] = 1
else:
dic[i] += 1
# 对字典按照键从小到大排序
sorted_dic = sorted(dic.items())
# 初始化一个空字典,用于存储每个元素的序号
index_dic = {}
# 初始化序号为1
index = 1
# 遍历排序后的字典,为每个元素赋予序号
for tup in sorted_dic:
# 取出元组中的键和值
key, value = tup
# 如果该元素之前没有出现过,则将序号赋值给该元素
if key not in index_dic:
index_dic[key] = index
index += 1
# 如果该元素之前出现过,则将序号赋值为上一次出现该元素的序号
else:
index_dic[key] = index_dic[key-value]
# 初始化一个空列表,用于存储替换后的元素
new_lst = []
# 遍历原列表,将每个元素替换为其序号
for i in lst:
new_lst.append(index_dic[i])
return new_lst
# 测试代码
lst = input("请输入几个整数,用逗号隔开:").split(",")
lst = [int(i) for i in lst]
new_lst = sort_list(lst)
print(new_lst)
```
运行结果如下:
```
请输入几个整数,用逗号隔开:40,10,20,30
[4, 1, 2, 3]
```
请用python函数编写一段代码 求列表中和为n的整数对 本题要求实现一个函数pairSum(),带两个输入参数:一个值不重复的整数列表lst和一个整数n。输出列表中所有和为n的整数对的索引。 函数接口定义: pairSum(lst, n) lst是传入的整数列表,n为整数 裁判测试程序样例: # 请在这里填写答案 def main(): #输入一系列以逗号隔开的整数 lst = list(map(int,input().split(","))) #输入一个整数 n = int(input()) pairSum(lst, n) main() 输入样例: 7,8,5,3,4,6 11 输出样例: 在这里给出相应的输出。例如: 0 4 1 3 2 5
可以使用字典来记录每个元素的索引,然后遍历列表,对于每个元素,检查 n - num 是否在字典中,如果在,则找到了一对和为 n 的元素,将它们的索引添加到结果列表中。
下面是 Python 代码实现:
```python
def pairSum(lst, n):
d = {}
res = []
for i, num in enumerate(lst):
if n - num in d:
res.append(d[n - num])
res.append(i)
else:
d[num] = i
print(' '.join(map(str, res)))
```
在主函数中,读入列表和目标和,然后调用 pairSum 函数即可。
完整代码如下:
```python
def pairSum(lst, n):
d = {}
res = []
for i, num in enumerate(lst):
if n - num in d:
res.append(d[n - num])
res.append(i)
else:
d[num] = i
print(' '.join(map(str, res)))
def main():
lst = list(map(int, input().split(",")))
n = int(input())
pairSum(lst, n)
main()
```
输入样例:
```
7,8,5,3,4,6
11
```
输出样例:
```
0 4 1 3 2 5
```
阅读全文