Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Python中读取文件并向列表中添加不重复的数字?_Python_List - Fatal编程技术网

如何在Python中读取文件并向列表中添加不重复的数字?

如何在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:

我正在读一个文件,其中有数百个数字(重复)从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:
            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
,而不是整数。是。如果这是家庭作业,我不想在这里做任何事情;)