比如a=['1','2','3'] b=['4','3','1']比较a中的下标对应b下标中的值
时间: 2023-10-23 08:25:18 浏览: 37
可以使用 enumerate() 函数来同时迭代 a 和 b 中的元素及其下标。然后通过字典来存储 b 中的元素及其下标,再遍历 a 中的元素,通过字典来获取其在 b 中的下标。
以下是示例代码:
```
a = ['1', '2', '3']
b = ['4', '3', '1']
b_dict = {value: index for index, value in enumerate(b)}
result = [b_dict[value] for value in a]
print(result)
```
输出:
```
[2, 1, 0]
```
这表示 a 中第一个元素 '1' 对应 b 中下标为 2 的元素 '1',第二个元素 '2' 对应 b 中下标为 1 的元素 '3',第三个元素 '3' 对应 b 中下标为 0 的元素 '4'。
相关问题
比如a=['1','2','3'] b=['4','3','1']比较a中的下标对应b下标中的值比较大小
你可以使用Python内置的`zip()`函数将a和b合并成一个元组,然后在元组中比较第二个值(也就是b中对应下标的值),最后根据比较结果排序a即可。
具体代码如下:
```
a = ['1', '2', '3']
b = ['4', '3', '1']
# 使用zip()将a和b合并成一个元组,元组中包含了每个下标在a和b中对应的值
c = zip(a, b)
# 使用lambda表达式定义比较函数,比较元组中的第二个值
compare = lambda x: x[1]
# 根据比较结果对a进行排序
a_sorted = [x[0] for x in sorted(c, key=compare)]
print(a_sorted) # 输出 ['3', '1', '2']
```
在上面的代码中,`sorted()`函数会按照`compare`函数定义的比较规则对`zip(a, b)`返回的元组进行排序,然后`[x[0] for x in sorted(c, key=compare)]`会从排序后的元组中提取出a中的元素,并返回排好序的a。
用python实现: 项目发布版本时会有版本号,比如1.02.11,2.14.4等等,现在给你2个版本号version1和version2,请你比较他们的大小。比较规则: a. 比较版本号时,请按从左到右的顺序依次比较它们的修订号。比较修订号时,只需比较忽略任何前导零后的整数值。比如"0.1"和"0.01"的版本号是相等的 b. 如果版本号没有指定某个下标处的修订号,则该修订号视为0。例如,"1.1"的版本号小于"1.1.1"。因为"1.1"的版本号相当于"1.1.0",第3位修订号的下标为0,小于1 c. version1 > version2 返回1,如果 version1 < version2 返回-1,不然返回0.
可以使用以下代码实现该问题的比较:
```
def compareVersions(version1: str, version2: str) -> int:
v1 = version1.split('.')
v2 = version2.split('.')
n1, n2 = len(v1), len(v2)
i = j = 0
while i < n1 or j < n2:
num1 = int(v1[i]) if i < n1 else 0
num2 = int(v2[j]) if j < n2 else 0
if num1 < num2:
return -1
elif num1 > num2:
return 1
i += 1
j += 1
return 0
```
需要注意的是,该函数的输入参数是两个字符串,而不是数字列表,因此需要先使用split方法将版本号分割为数字列表。然后按照题目所给的比较规则逐位比较两个版本号的数字。如果某个版本号的某一位不存在,则说明对应的修订号为0。如果某个版本号的某一位前有多个0,则应该忽略这些0,即"1.01"应该被视为"1.1"。如果两个版本号在某一位前的所有位都相等,但某一个版本号的后面还有若干位,则应该将这些位视为0,即"1.1"应该被视为"1.1.0"。最后,如果两个版本号在所有位上都相等,则它们是相等的,返回0。如果在某一位上有不同,则可以根据大小关系返回1或-1。
阅读全文