python 中的独特功能
Unique function in python
for i in df["col"].unique():
...
这里 unique
函数在每次循环迭代后调用,还是只调用一次并将结果存储在内存中??
问这个只是为了检查 unique
函数是否在每次迭代后执行,那么即使在下一次迭代中 i
也有可能与上一次迭代相同。
Ex 第一次 unique
函数被调用然后 df["col"].unique()
给出 [1,2] 所以 i
在第一次迭代和第二次迭代中为 1 unique
函数再次调用并且 i
可能会再次获得 1 作为值。
您使用的构造首先计算 .unique() 函数并使用该函数的结果(如果可迭代)进行循环。
如果您希望循环每次迭代都对函数求值,您可以使用如下结构:
list = [x.function() for x in items]
查看此 link 了解更多信息:
https://opensource.com/article/18/3/loop-better-deeper-look-iteration-python
这是一个快速代码示例,可以了解它是如何工作的:
df = pd.DataFrame(0, index=np.arange(2), columns=['1','2'])
df.iloc[0][0]=1
for i in df['1'].unique():
print(f'unique values : {i}')
print(df)
df.iloc[1][0]=2
首先,我们创建一个 2x2 零数据帧,在 [1][1] 位置有一个 1 :
1 2
0 1 0
1 0 0
然后我们调用 unique
来获取第 1 列的所有唯一值(即 0 和 1)。
在循环期间,我们更改第 1 列(我们迭代的那个)单元格的值之一。但是正如您在输出中看到的那样,它没有在循环中添加任何迭代。
这意味着 df.unique() 在迭代之前存储结果,就像 MdBrainz 所说的那样,并且在循环期间修改值不会改变循环迭代的次数。
输出:
unique values : 1
1 2
0 1 0
1 0 0
unique values : 0
1 2
0 1 0
1 2 0
for i in df["col"].unique():
...
这里 unique
函数在每次循环迭代后调用,还是只调用一次并将结果存储在内存中??
问这个只是为了检查 unique
函数是否在每次迭代后执行,那么即使在下一次迭代中 i
也有可能与上一次迭代相同。
Ex 第一次 unique
函数被调用然后 df["col"].unique()
给出 [1,2] 所以 i
在第一次迭代和第二次迭代中为 1 unique
函数再次调用并且 i
可能会再次获得 1 作为值。
您使用的构造首先计算 .unique() 函数并使用该函数的结果(如果可迭代)进行循环。
如果您希望循环每次迭代都对函数求值,您可以使用如下结构:
list = [x.function() for x in items]
查看此 link 了解更多信息: https://opensource.com/article/18/3/loop-better-deeper-look-iteration-python
这是一个快速代码示例,可以了解它是如何工作的:
df = pd.DataFrame(0, index=np.arange(2), columns=['1','2'])
df.iloc[0][0]=1
for i in df['1'].unique():
print(f'unique values : {i}')
print(df)
df.iloc[1][0]=2
首先,我们创建一个 2x2 零数据帧,在 [1][1] 位置有一个 1 :
1 2
0 1 0
1 0 0
然后我们调用 unique
来获取第 1 列的所有唯一值(即 0 和 1)。
在循环期间,我们更改第 1 列(我们迭代的那个)单元格的值之一。但是正如您在输出中看到的那样,它没有在循环中添加任何迭代。
这意味着 df.unique() 在迭代之前存储结果,就像 MdBrainz 所说的那样,并且在循环期间修改值不会改变循环迭代的次数。
输出:
unique values : 1
1 2
0 1 0
1 0 0
unique values : 0
1 2
0 1 0
1 2 0