Python新手求助:用for循环和append按换行生成多组整数列表
解决方法
你现有代码的问题很明确:直接遍历输入字符串时,Python会逐个取出每个字符,所以才会把\n、1、0这类单个字符都塞进列表;而且lists = new_list.append(i)完全多余——append()方法返回的是None,这么写只会把lists变量覆盖成无效值。
要实现按空行分组生成整数列表的需求,用for循环和append()可以这么做:
完整代码
def process_data(data_str): # 存储最终结果,每个元素对应一个人的整数列表 result = [] # 第一步:按空行(连续两个换行符)分割成各组数据字符串 groups = data_str.split('\n\n') # 遍历每个分组 for group in groups: # 临时存储当前分组的整数 person_data = [] # 将当前分组按换行符拆成单个数字字符串 num_strings = group.split('\n') # 遍历每个数字字符串 for num_str in num_strings: # 过滤空字符串(避免分组内多余换行产生的无效元素) if num_str.strip(): # 转成整数并添加到当前分组列表 person_data.append(int(num_str)) # 将当前分组的整数列表加入最终结果 result.append(person_data) return result # 测试用的数字字符串 test_data = """1000 2000 3000 4000 5000 6000 7000 8000 9000 10000 """ # 执行并输出结果 output = process_data(test_data) for item in output: print(item)
运行结果
[1000, 2000, 3000] [4000, 5000, 6000] [7000, 8000, 9000] [10000]
步骤说明
- 按空行分组:用
data_str.split('\n\n')把整个字符串拆成4个独立分组,每个分组对应一个人的数据。 - 拆分单个数字:对每个分组字符串,用
split('\n')拆成单个数字的字符串列表,比如第一个分组会得到['1000', '2000', '3000']。 - 过滤转换:遍历每个数字字符串,用
strip()过滤空字符串(避免分组内多余换行的干扰),再转成整数添加到当前分组的列表中。 - 收集结果:把每个分组的整数列表添加到最终结果列表,得到预期的分组结构。
内容的提问来源于stack exchange,提问作者Marie Hanz
相关产品推荐
相关产品推荐

