如何在Python中读取文件并向列表中添加不重复的数字?
我正在读一个文件,其中有数百个数字(重复)从1到1000。我想创建一个文件中所有唯一编号的列表。我这样做的方式(见附件代码),9之后的任何数字,即10及以上都将被忽略,因此不会存储在列表中如何在Python中读取文件并向列表中添加不重复的数字?,python,list,Python,List,我正在读一个文件,其中有数百个数字(重复)从1到1000。我想创建一个文件中所有唯一编号的列表。我这样做的方式(见附件代码),9之后的任何数字,即10及以上都将被忽略,因此不会存储在列表中 TID = 0 items = [] f = open(dataset_name, 'r', encoding="utf8") for row in f: TID = TID + 1 for item in row: if item not in items:
TID = 0
items = []
f = open(dataset_name, 'r', encoding="utf8")
for row in f:
TID = TID + 1
for item in row:
if item not in items:
items.append(item)
你不是在迭代任何数字中的每一个数字吗?当你读取它们时,它们仍然是字符串?所以相关部分应该是
seen=[]
...
对于f中的行:
如果看不到线:
seen.append(行)
有更好的数据结构可用于检查是否已看到某个项目,但在本例中,这并不重要。您不是在任何数字中迭代每个数字吗?读取这些数字时,这些数字仍然是字符串?所以相关部分应该是
seen=[]
...
对于f中的行:
如果看不到线:
seen.append(行)
有更好的数据结构可用于检查是否已看到某个项,但在本例中,这并不重要。我相信您的迭代器太多了:
行是文件中的一行,并且
for item in row:
将迭代行中的字符
Python也为此设置了数据结构,我相信您可以做到:
TID = 0
items = set()
f = open('jutska.txt', 'r', encoding="utf8")
for row in f:
TID = TID + 1
items.add(row.strip())
请注意使用strip
删除结尾处的换行符,并将其转换为int
我相信您的迭代器太多了:row
是文件中的一行,并且
for item in row:
将迭代行中的字符
Python也为此设置了数据结构,我相信您可以做到:
TID = 0
items = set()
f = open('jutska.txt', 'r', encoding="utf8")
for row in f:
TID = TID + 1
items.add(row.strip())
请注意,使用strip
删除末尾的换行符,并将其转换为int
,正如其他人所说,行中项目的:
循环导致代码查看单个字符,而不是每一行作为数字。
对于如此小的数据,一个简单的解决方案是一次读取所有数据,即
With open('jutska.txt', 'r', encoding="utf8") as f:
itemlist = f.read().split()
TID = len(itemlist)
items = set(int(item) for item in itemlist)
如果不需要行数(TID
),可以使用
With open('jutska.txt', 'r', encoding="utf8") as f:
items = set(int(item) for item in f.read().split())
正如其他人所说,行:
中项目的循环导致代码查看单个字符,而不是每一行作为数字。
对于如此小的数据,一个简单的解决方案是一次读取所有数据,即
With open('jutska.txt', 'r', encoding="utf8") as f:
itemlist = f.read().split()
TID = len(itemlist)
items = set(int(item) for item in itemlist)
如果不需要行数(TID
),可以使用
With open('jutska.txt', 'r', encoding="utf8") as f:
items = set(int(item) for item in f.read().split())
如果将所有数字读入列表,然后使用set(mylist),则将返回一个具有唯一数字的set对象。@S3DEV我从文件中读取的方式似乎有问题。数字被读取为字符而不是整数。因此,使用set(mylist)会导致相同的问题。如果将所有数字读入列表,然后使用set(mylist),将返回一个具有唯一数字的set对象。@S3DEV我从文件中读取的方式似乎有问题。数字被读取为字符而不是整数。因此,使用set(mylist)会导致相同的问题。请注意,此解决方案使用以换行符(\n
)结尾的字符串而不是整数填充seen
。是。如果这是家庭作业,我不想在这里做任何事情;)请注意,此解决方案使用以换行符(\n
)结尾的字符串填充seen
,而不是整数。是。如果这是家庭作业,我不想在这里做任何事情;)