python里如何把一个list分成两个

把['2C', '2S', '2H']变成[2,2,2]和[C,S,H]
或者直接证明这个list中数字部分相等

思考,用正则表达式,把字符串里的数字提前出来. 数字排序之后,如果第一个和最后一个相等,那么数字部分就完全相等

参考代码

#!/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']

温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答