我想写一个函数,给函数传入一个列表。进行一些判断后产生一个新列表。。。。。。。。。。。。。。。。。。。。。 def get_file(file_index1): file_index2 = [] for f2 in file_index1: f_kind = f2.split("-")[0] f_num = f2.split("-")[2] f_type = f2.split("-")[3].split(".")[0]
f_all = f_kind+'-'+f_type if f_all == 'receiver-in': F2 = 'sender'+'-8100-'+f_num+'-out.wav' print(F2) return file_index2
但是最后结果获取不到新列表。
1 LeIYc OP def get_file(file_index1): file_index2 = [] for f2 in file_index1: f_kind = f2.split("-")[0] #print(f_kind) f_num = f2.split("-")[2] #print(f_num) f_type = f2.split("-")[3].split(".")[0] #print(f_type) f_all = f_kind+'-'+f_type #print(f_all) # file_index2.append((f_all,f_num)) if f_all is 'receiver-in': F2 = 'sender'+'-8100-'+f_num+'-out.wav' #print(F2) file_index2.append(F2) return file_index2 |
![]() | 2 sikariba 2018-04-12 14:31:17 +08:00 v 站不能贴 Markdown 吗。。。 |
![]() | 3 prolic 2018-04-12 14:33:13 +08:00 via Android 字符串比较别用 is |
4 rocksolid 2018-04-12 14:35:02 +08:00 获取不到新列表,那你获取的是什么? |
5 LeIYc OP 获取的是空的。不过现在莫名其妙的获取成功了。真是醉了。。。。。。 判断的时候用多个 if 好呢。还是 if。。。elif。。。。else 这种的好啊。 |
6 fromxt 2018-04-12 14:56:34 +08:00 is 比较引用是否相同 == 比较内容是否相同 if f_all is 'receiver-in': --> if f_all == 'receiver-in':就可以了 |
7 LeIYc OP @fromxt 谢谢你的帮助。现在又遇到新问题了,怎么让列表自由组合 生成新的列表 L1=[receiver,sender] L2 = [-in,-out] 生成: L3 = ['receiver-in','receiver-out','sender-in','sender-out'] 虽然可以直接写出来。但是想学下怎么自动生成 |
![]() | 8 ballshapesdsd 2018-04-12 15:17:46 +08:00 ![]() @LeIYc #7 L3=list(map(lambda x:''.join(x),itertools.product(L1,L2))) |
9 fromxt 2018-04-12 15:44:43 +08:00 @LeIYc 不客气,我也是菜鸟,用列表推导就可以解决 L1=[‘ receiver ’,‘ sender ’] L2 = [‘-in ’,‘-out ’] L3 =list(x+y for x in L1 for y in L2)) 另外,其实《 Beginning Python 》这本书没事多翻翻就能找到答案了 |
10 LeIYc OP L3 = [(l1+l2)for l1 in L1 for l2 in L2 ] 这样也可以 |
11 LeIYc OP 有一个列表 里面大概 20 个元素。每个元素中有一段数字类似这样 receiver-8100-20180316102434-out.wav 相同数字的文件有四个['receiver-in', 'receiver-out', 'sender-in', 'sender-out'] 目前只取出了 3 个,还差一个 。最后那个应该怎么取? |
![]() | 12 vipppppp 2018-04-12 16:08:37 +08:00 看了几遍,都不知道你的“怎么取”是什么意思。。。 |
13 LeIYc OP @fromxt 再请教个问题: 有一个列表,列表元素大概是这样的 ['sender-8100-20180316101841-in.wav', 'sender-8100-20180316101841-out.wav', 'receiver-8100-20180316101841-in.wav', 'receiver-8100-20180316101841-out.wav'] 元素都是成组出现的,一个组数字有四个想同的文件。 怎么才能根据数字将元素重新组合生成新的列表。每四个组成一个新的列表 有没有什么关键字的方法可以实现? |
14 fromxt 2018-04-14 06:20:42 +08:00 @LeIYc 这个用 re 匹配一下数字,再用 set 去重就可以了 eg: import re data0 = ['sender-8100-20180316101841-in.wav', 'sender-8100-20180316101841-out.wav', 'receiver-8100-20180316101841-in.wav', 'receiver-8100-20180316101841-out.wav'] data1 = [] for item in data: data1.append(re.sub(r'[^0-9\-]', '', item)) list(set(data1) 再用一个列表推导式处理 |