自动生成多个有规律的python列表

 

 问大家一些问题,平常在我们练习时如果在没有给定数据的情况下,手敲这样一个DataFrame 对象是不是很麻烦,而且容易出错,我想了一个办法让其自动生成,这样就省事省力。

首先这些数据都是有规则的依次递增的例如:  

'A0', 'A1', 'A2', 'A3', 'A4'

 所以看我的操作:

def str_handle2(B):
    str_werater3 = 'A0,A1,A2,A3,A4'
    new_s = re.sub('A', B, str_werater3)
    list_str_weater = new_s.split(',')
    return  list_str_weater
jieguo = str_handle2("D")
print(jieguo)

 1. 首先我给了它一个模板,'A0,A1,A2,A3,A4',因为作为其他数据如  'B0', 'B1', 'B2', 'B3', 'B4',

只需要替换掉模板中的A就可以了。

这时我想到python 中的正则 re 模块,

re.sub('A', B, str_werater3)
re.sub(pattern, repl, string)

re.sub :  re.sub() 是 Python 标准库 re 模块中的一个函数,主要用于在字符串中查找与正则表达式模式匹配的子串,并将这些匹配项替换为指定的字符串或其他内容。 

  • pattern: 必需参数,它是要匹配的正则表达式模式。这个模式会被编译成一个正则表达式对象(如果它不是一个预编译的正则表达式对象)。

  • repl: 必需参数,它指定了要替换匹配到的子串的内容。它可以是一个字符串,也可以是一个接受匹配对象作为参数的函数,该函数返回一个替换字符串。

  • string: 必需参数,它是待处理的原始字符串,在其中查找并替换匹配项。

明白我做了什么吧?将原字符串str_werater3  中的A替换成了B,不过在我的代码re.sub('A', B, str_werater3)中 B不是将要替换的字符串,我自定义了一个方法,它是方法中的形式参数。

def str_handle2(B):
    str_werater3 = 'A0,A1,A2,A3,A4'
    new_s = re.sub('A', B, str_werater3)
    list_str_weater = new_s.split(',')
    return  list_str_weater。
jieguo = str_handle2("D")

 而   jieguo = str_handle2("D")  中的"D"是我想让其代替字符串中'A0,A1,A2,A3,A4' 所有A 的位置。

 而  list_str_weater = new_s.split(',')   的作用:new_s.split(',')  调用字符串new_s的split()方法,让其将字符串中的元素根据逗号来分割并自动成列表

 这样下来,我们只需要改变向自定义函数  str_handle2()  传入的参数即可,如果需要将所有A更换成C只需要往里面传入 "C"

str_handle2("D")

上面那个还不过瘾还需要更换输入元素才能完成。下面我叫大家一个将所有的元素都生成

例如像这样

str_zimu = 'A,B,C,D,E,F'
str_zimu_no_d = ','.join(s for s in str_zimu.split(',') if s != 'D')
list1 = str_zimu_no_d.split(',')
for outer_var in list1:
    print([f'{outer_var}{inner_var}'for inner_var in range(4,8)])
s for s in str_zimu.split(',') if s != 'D' 是Python中的列表推导式(List Comprehension)语法,它是一种简洁而高效的生成新列表的方式。具体在这个场景中,它的工作原理可以分解为以下步骤:

首先,str_zimu.split(',') 将字符串 str_zimu 按照逗号 , 进行分割,得到一个包含各个分隔元素的列表。例如,对于输入 'A,B,C,D,E,F',此操作将得到 ['A', 'B', 'C', 'D', 'E', 'F']。

接下来,列表推导式 [s for s in ...] 对第一步得到的列表进行遍历。对于列表中的每一个元素 s:

如果满足条件 if s != 'D',即当前元素 s 不等于字符串 'D',则将该元素 s 加入到新生成的列表中。
最终,列表推导式完成遍历后,会生成一个新的列表,其中包含了原始列表中所有不等于 'D' 的元素。

所以整个表达式 s for s in str_zimu.split(',') if s != 'D' 的作用就是:从 str_zimu 按逗号分割出的列表中筛选出不等于 'D' 的元素,并生成一个新的列表。
','.join(s for s in str_zimu.split(',') if s != 'D')  的作用:
(s for s in str_zimu.split(',') if s != 'D')的作用是剔除原来字符串中的'D'元素,并且生成一个新列表。.join的作用将新生成列表中的所有元素进行连接.
','.join
join()
 方法通常用于将一个列表(尤其是由字符串构成的列表)连接成单个字符串,每个元素之间用特定的分隔符隔开。(','这就是特定字符,字符串之间用逗号隔开)

[f'{outer_var}{inner_var}'for inner_var in range(4,8)]  它是列表推导式和字符串格式化的运用。
[xxxxx'for inner_var in range(4,8)] 列表推导式
f'{outer_var}{inner_var}'  字符惨格式化,将想要写入内容写入到想要写入的地方。
f'{outer_var}{inner_var}'中outer_var  控制 像 A0 中,大写字母,inner_var 控制像A0中的数字。
for outer_var in list1:  作用: 因为想要将自定义列表中的  ['A', 'B', 'C', 'E', 'F']每个生成一个像['A4', 'A5', 'A6', 'A7']这样一个东西。所以在for 循环的监督下每当使用完 ['A', 'B', 'C', 'E', 'F']列表一个元素就停止开始遍历下一个'B'接而生成['B4', 'B5', 'B6', 'B7'],直到['A', 'B', 'C', 'E', 'F']遍历完。

尽自己可能,写入一些对大家真实有用的东西。

静下心来,将每一件事做到内心满意

  • 23
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值