我的循环列表有问题.不能得到预期的结果



下面是我的代码:

UserList = [['person1', '25yo','70kg','170cm'],[ 'person2','21yo','54kg','164cm']]
ListStrUser = []
for ListStrUser in UserList:
ListStrUser = GetNum(UserList)
def GetNum(anyList):                     
for i in range(1,len(anyList)):         
anyList[i] = re.sub (r'D',"", str(anyList[i]))
return anyList
print(ListStrUser)

# # # # # # # #预期结果:

[['person1', '25','70','170'],[ 'person2','21','54','164']]

你离亚洲不远了。但我不能对伊森的回答补充太多这就是为什么我很困惑为什么它被否决了。如果你想要一个可以处理所有工作而不需要另一个for循环的函数,那么下面的函数就可以做到这一点:

import re
UserList = [['person1', '25yo','70kg','170cm'],[ 'person2','21yo','54kg','164cm']]
def get_num(any_list):
# includes the for loop to iterate through the list of lists
list_str_user = []
for inner_list in any_list:
temp_list = [inner_list[0]]
for i in range(1,len(inner_list)):
temp_list.append(re.sub(r'D', '', str(inner_list[i])))
list_str_user.append(temp_list)
return list_str_user
print(get_num(UserList))

输出:

[['person1', '25', '70', '170'], ['person2', '21', '54', '164']]

因此不需要在函数外使用for循环。

import re
def GetNum(anyList):
for i in range(1, len(anyList)):
anyList[i] = re.sub(r'D[^0-9]',"",str(anyList[i]))
return anyList


userList = [['person1','25yo','70kg','170cm'],['person2','21yo','54kg','164cm']]
for ListStrUser in userList: ListStrUser = GetNum(ListStrUser)

print("Output : ", userList) 

输出:[['person1', '25', '70', '170'], ['person2', '21', '54', '164']]

from @Guy 's comment:

UserList = [['person1', '25yo','70kg','170cm'],[ 'person2','21yo','54kg','164cm']]
import re
def GetNum(anyList):
for i in range(1,len(anyList)):
anyList[i] = re.sub (r'D',"", str(anyList[i]))
return anyList
ListStrUser = []
for ListStr in UserList:
ListStrUser.append(GetNum(ListStr))

print(ListStrUser)

[['person1', '25', '70', '170'], ['person2', '21', '54', '164']]

尝试以下代码:

user_list = [['person1', '25yo','70kg','170cm'],[ 'person2','21yo','54kg','164cm']]
list_str_user = []

def get_num(any_list):     
updated_list = [any_list[0]]
for i in range(1,len(any_list)):         
updated_list.append(re.sub(r'D',"", str(any_list[i])))

return updated_list

for user in user_list:
list_str_user.append(get_num(user))
print(list_str_user)

注意,我还更新了变量和函数的命名以及函数之间的间距,以符合pep8。在编写Python代码时请记住这一点。

函数也应该在使用它们之前定义,否则Python不会找到它们。

我还在get_num中创建了updated_list变量,不改变函数中的参数从来都不是一个坏主意。