如何在Streamlit应用中获取用户输入的数值列表?
解决Streamlit获取用户数值列表的问题
你的代码目前只是将用户输入的整串字符串作为列表的单个元素返回,并没有实现拆分输入、转换为数值类型的功能。下面提供两种实用的实现方式:
方式1:逗号分隔输入(适合快速输入多个数值)
让用户用逗号分隔输入数字,通过代码拆分并转换为数值列表,同时处理无效输入:
import streamlit as st def collect_numbers(input_str): # 按逗号拆分输入,去除每个元素的空格,过滤空内容 parts = [p.strip() for p in input_str.split(',') if p.strip()] try: # 转换为浮点型(如果需要整数可以替换为int) numbers = [float(p) for p in parts] return numbers except ValueError: # 输入无效时返回空列表 return [] numbers_input = st.text_input("请输入数字,用逗号分隔(例如:1, 2.5, 3)") numbers = collect_numbers(numbers_input) if numbers: st.write("你输入的数值列表:", numbers) elif numbers_input: st.error("请输入有效的数字,用逗号分隔")
方式2:逐个添加数值(更直观,避免输入错误)
通过number_input和按钮让用户逐个添加数值,利用Streamlit的会话状态保存列表:
import streamlit as st # 初始化会话状态,用于跨交互保存数值列表 if 'numbers_list' not in st.session_state: st.session_state.numbers_list = [] # 输入单个数值 new_number = st.number_input("输入一个数字", value=0.0) if st.button("添加到列表"): st.session_state.numbers_list.append(new_number) # 展示当前列表和清空按钮 st.write("当前数值列表:", st.session_state.numbers_list) if st.button("清空列表"): st.session_state.numbers_list = []
内容的提问来源于stack exchange,提问作者user14269252
相关产品推荐
相关产品推荐

