在C#中,int并且Int32是同样的事情,但我读了许多那个时代int优于Int32没有给出理由.有原因,我应该关心吗?
IEnumerable<T>是共变体,但它不支持值类型,仅支持引用类型.以下简单代码编译成功:
IEnumerable<string> strList = new List<string>();
IEnumerable<object> objList = strList;
Run Code Online (Sandbox Code Playgroud)
但是从更改string到int将得到编译错误:
IEnumerable<int> intList = new List<int>();
IEnumerable<object> objList = intList;
Run Code Online (Sandbox Code Playgroud)
原因在MSDN中解释:
差异仅适用于参考类型; 如果为变量类型参数指定值类型,则该类型参数对于生成的构造类型是不变的.
我搜索过并发现有些问题提到的原因是值类型和引用类型之间的装箱.但它仍然不清楚我的想法为什么拳击是什么原因?
有人可以给出一个简单而详细的解释为什么协方差和逆变不支持值类型以及拳击如何影响这个?
我有一个可疑的编码实践.
当我需要遍历计数限制不足的项目的小列表时32000,我使用的Int16是我的i变量类型而不是Integer.我这样做是因为我认为使用它Int16比完全吹制效率更高Integer.
我错了吗?使用Int16vs与Integer?之间没有有效的性能差异吗?我应该停止使用Int16并坚持Integer我的所有计数/迭代需求吗?
在Core Data你可以存储Int16,Int32,Int64但它是从不同的Int.它们存在的原因是什么,你如何使用它们?
我正在做关于机器学习的本教程,其中使用了以下代码:
import pandas as pd
from sklearn.model_selection import train_test_split
df = pd.read_csv('breast-cancer-wisconsin.data.csv')
df.replace('?', -99999, inplace = True)
df.drop(['id'], 1, inplace = True)
X = np.array(df.drop(['class'], 1))
y = np.array(df['class'])
X_train, X_test, y_test, y_train = train_test_split(X, y)
Run Code Online (Sandbox Code Playgroud)
以下是csv文件中的示例:
id,clump_thickness,unif_cell_size,unif_cell_shape, marg_adhesion,
single_epith_cell_size,bare_nuclei,bland_chrom,norm_nucleoli, mitoses,class
1000025,5,1,1,1,2,1,3,1,1,2
1002945,5,4,4,5,7,10,3,2,1,2
1015425,3,1,1,1,2,2,3,1,1,2
1016277,6,8,8,1,3,4,3,7,1,2
1017023,4,1,1,3,2,1,3,1,1,2
1017122,8,10,10,8,7,10,9,7,1,4
1018099,1,1,1,1,2,10,3,1,1,2
1018561,2,1,2,1,2,1,3,1,1,2
1033078,2,1,1,1,2,1,1,1,5,2
1033078,4,2,1,1,2,1,2,1,1,2
1035283,1,1,1,1,1,1,3,1,1,2
1036172,2,1,1,1,2,1,2,1,1,2
1041801,5,3,3,3,2,3,4,4,1,4
1043999,1,1,1,1,2,3,3,1,1,2
1044572,8,7,5,10,7,9,5,5,4,4
1047630,7,4,6,4,6,1,4,3,1,4
1048672,4,1,1,1,2,1,2,1,1,2
1049815,4,1,1,1,2,1,3,1,1,2
1050670,10,7,7,6,4,10,4,1,2,4
1050718,6,1,1,1,2,1,3,1,1,2
1054590,7,3,2,10,5,10,5,4,4,4
1054593,10,5,5,3,6,7,7,10,1,4
1056784,3,1,1,1,2,1,2,1,1,2
1057013,8,4,5,1,2,?,7,3,1,4
1059552,1,1,1,1,2,1,3,1,1,2
1065726,5,2,3,4,2,7,3,6,1,4
1066373,3,2,1,1,1,1,2,1,1,2
Run Code Online (Sandbox Code Playgroud)
在查看结果时,sklearn.model_selection.train_test_split我发现了一些奇怪的东西(至少对我而言).如果我跑
print(type(y_test[0]))
print()
print(type(X_train[:,1][0]))
Run Code Online (Sandbox Code Playgroud)
我得到以下输出:
<class 'numpy.int64'>
<class …Run Code Online (Sandbox Code Playgroud) 在3.ToString()上调用哪种方法?
我是c#的新手,请原谅我,但我只想知道为什么要将int转换为int32?
例如,我声明lowerRange为一个int,但后来在我读取用户输入时,我必须将其转换为int32,否则它会给我一个错误,说我"不能隐式地将类型'string'转换为'int'.
或者我假设我必须转换,因为用户输入一个字符串,我必须将其转换为int,在这种情况下,我想知道为什么我必须首先声明lowerRange为int?
int lowerRange;
...
lowerRange = Convert.ToInt32(Console.ReadLine());
Run Code Online (Sandbox Code Playgroud) c# ×6
.net ×2
arrays ×1
c#-4.0 ×1
covariance ×1
int ×1
integer ×1
ios ×1
python ×1
python-3.x ×1
scikit-learn ×1
swift ×1
types ×1
variables ×1
vb.net ×1