思考,用正则表达式,把字符串里的数字提前出来. 数字排序之后,如果第一个和最后一个相等,那么数字部分就完全相等
参考代码
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# python 2.7
import re
def func(li):
nums = []
for s in li:
s = re.findall(r'\D*(\d+)\D*',s)
nums.append(int(s[0]))
print nums
# 排序
nums.sort()
# 如果排序后,第一个和最后一个相等,那么就完全相等
if nums[0] == nums[-1]:
print True,"数字完全相等"
else:
print False,"数字不全部相等"
test1 = ['2C', '2S', '2H']
test2 = ['A3C', 'D2S', 'C2H']
func(test1)
func(test2)
测试
[2, 2, 2]
True 数字完全相等
[3, 2, 2]
False 数字不全部相等
追问我发现还忽略了个问题如果list当中有的元素不包含数字怎么办?或者如何让list中的某个元素等于另一个?
比如['2D', '3S', '4D', 'QD', '0S', 'JD']
我想求每个单独元素的第一个的和该怎么弄(2,3,4,Q,0,J)
让Q=12,J=11,0=10
2+3+4+Q+0+J=2+3+4+12+10+11=32
追答根据你的新需求写的参考代码
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# python 2.7
import re
def func(li):
nums = []
for index, s in enumerate(li):
tp = s[0]
if tp in dt:
nums.append(dt.get(tp))
li[index] = dt.get(tp)+s[1]
else:
nums.append(tp)
print "单独出来的数字",nums
print "修改出来的数据",li
dt = {"0": "10", "J": "11", "Q": "12"}
test = ['2D', '3S', '4D', 'QD', '0S', 'JD']
func(test)
测试输出
单独出来的数字 ['2', '3', '4', '12', '10', '11']
修改出来的数据 ['2D', '3S', '4D', '12D', '10S', '11D']