python - 为什么我无法访问在我的方法中生成的这个列表?
问题描述
我正在尝试编写一种将给定时间仅转换为数字的方法(以便于从小时到分钟的整数转换)。当我在方法中打印生成的列表时,它工作得很好。
但是,当我尝试从方法外部访问 first_two_digits_list 或 last_two_digits_list 时,它无法这样做(即使使用全局声明)。
有人可以向我解释为什么会这样,因为我不知道。此外,如果有人可以帮助我找到访问此列表的解决方案或其他方式,那将是完美的!
times_list = [["11:00","12:00"], ["12:00","13:00"]]
# Method that converts list into sections of digits (for ease of integer use)
def ConvertToDigits():
global first_value, second_value, third_value, fourth_value, last_two_digits_list
# initial counter for while loop
n = 0
# two new lists of digits
first_two_digits_list = []
last_two_digits_list = []
while n < len(times_list):
first_digit_value = ((((times_list[n])[0])[0]) + (((times_list[n])[0])[1]))
second_digit_value = ((((times_list[n])[1])[0]) + (((times_list[n])[1])[1]))
third_digit_value = ((((times_list[n])[0])[3]) + (((times_list[n])[0])[4]))
fourth_digit_value = ((((times_list[n])[1])[3]) + (((times_list[n])[1])[4]))
first_two_digits_list.append([(first_digit_value), (second_digit_value)])
last_two_digits_list.append([(third_digit_value), (fourth_digit_value)])
n+= 1
解决方案
在您的代码中,first_two_digits_list
或者last_two_digits_list
不是全局变量。它们是 function 的局部变量ConvertToDigits
。但是,times_list
它是一个全局变量,因为它是在函数外部定义的,这就是为什么您可以在ConvertToDigits
. 解决您的问题的一个简单方法是,
times_list = [["11:00","12:00"], ["12:00","13:00"]]
# two new lists of digits
first_two_digits_list = []
last_two_digits_list = []
# Method that converts list into sections of digits (for ease of integer use)
def ConvertToDigits():
# initial counter for while loop
n = 0
while n < len(times_list):
first_digit_value = ((((times_list[n])[0])[0]) + (((times_list[n])[0])[1]))
second_digit_value = ((((times_list[n])[1])[0]) + (((times_list[n])[1])[1]))
third_digit_value = ((((times_list[n])[0])[3]) + (((times_list[n])[0])[4]))
fourth_digit_value = ((((times_list[n])[1])[3]) + (((times_list[n])[1])[4]))
first_two_digits_list.append([(first_digit_value), (second_digit_value)])
last_two_digits_list.append([(third_digit_value), (fourth_digit_value)])
n+= 1
ConvertToDigits()
print(first_two_digits_list,last_two_digits_list)
输出
[['11', '12'], ['12', '13']] [['00', '00'], ['00', '00']]
从评论跟进
另一种方法:
times_list = [["11:00","12:00"], ["12:00","13:00"]]
# Method that converts list into sections of digits (for ease of integer use)
def ConvertToDigits():
# initial counter for while loop
global first_two_digits_list, last_two_digits_list
first_two_digits_list = []
last_two_digits_list = []
n = 0
while n < len(times_list):
first_digit_value = ((((times_list[n])[0])[0]) + (((times_list[n])[0])[1]))
second_digit_value = ((((times_list[n])[1])[0]) + (((times_list[n])[1])[1]))
third_digit_value = ((((times_list[n])[0])[3]) + (((times_list[n])[0])[4]))
fourth_digit_value = ((((times_list[n])[1])[3]) + (((times_list[n])[1])[4]))
first_two_digits_list.append([(first_digit_value), (second_digit_value)])
last_two_digits_list.append([(third_digit_value), (fourth_digit_value)])
n+= 1
ConvertToDigits()
print(first_two_digits_list,last_two_digits_list)
输出
[['11', '12'], ['12', '13']] [['00', '00'], ['00', '00']]
推荐阅读
- tinymce - 如何在页面中显示 TinyMCE?
- c - 模运算符比手动执行慢?
- kubernetes-helm - 使用变量定义其他变量
- mysql - 使用 Xorm 将多个 Select 查询作为批处理/管道运行
- regex - 处理不同的转义序列?
- arrays - 将嵌套 JSON 转换为数组
- python - can i raise exception from inside a function in the 'try:' block when client disconnects from the server?
- sql - 如何在不使用 GROUP BY 或 PARTITION BY 的情况下对 Oracle SQL 中的数据进行分组
- javascript - 如何修复此错误:NotReadableError:无法启动视频源
- c# - 如何在应用程序的设置中保存图像或文件流?UWP C#