我试图覆盖通过带有各自方块的文件输入的列表中的数字。我有:
def squareEach():
fname = input("Enter exact file name: ")
infile = open(fname, 'r')
data = infile.readlines()
nums = []
nums1 = []
for i in range(len(data)):
nums.append(data[i].split())
nums1.append(nums[i] ** 2)
print(nums1)
squareEach()
但是收到错误。有什么帮助吗?
答案 0 :(得分:0)
data[i].split()
返回list
,因此您向变量list
附加nums
。
然后,您尝试nums[i] ** 2
。但是,nums包含整数列表,因此nums[i]
是一个列表,您无法对list
不应附加data[i].split()
,而应附加一个整数。
答案 1 :(得分:0)
假设您的输入文件如下所示:
1 1
2 4
3 9
4 16
然后这行代码:
nums.append(data[i].split())
创建一个两元素列表,例如['4', '16']
,并将其放入nums
。因此,nums
是一个列表列表,您必须将其下标两次:一次获取所需的子列表,再次获取子列表中的元素,如下所示:
nums[i][0]
由于这些项目存储为字符串,因此如果您想进行计算,则需要对这些值调用int()
。
答案 2 :(得分:0)
如果以下列格式返回读取数据:
data = ["1 2 3 4 5 6","7 8 9"]
然后,以下代码将正确填充两个列表,一个包含整数值,另一个包含正方形:
num = []
num1 = []
for line in data:
for num_string in line.split():
integer = int(num_string)
num.append(integer)
num1.append(integer**2)